RecyclerViewネストされたRecyclerViewを簡単に実現
2819 ワード
Linearlayoutmanager RecyclerViewネストGridLayoutManager RecyclerViewレイアウト:GridLayoutManagerのrecyclerviewをLinearlayoutmanager RecyclerViewのitemviewとして使用
MainRecyclerAdapter.java
注意が必要なのはGridLayoutManagerがsettAutoMeasureEnabled(true)を適応高さに設定することです***
onBindViewではitemのrecyclerviewにアダプタが設定されているかどうかを判断する必要がありますが、設定を繰り返すとスライドがスムーズになりません***
GridAdapter.java
作者:プロセスリンク:https://www.jianshu.com/p/e35d0c39cd91出典:簡書簡書の著作権は著者の所有であり、いかなる形式の転載も著者に連絡して授権を得て出典を明記してください.
MainRecyclerAdapter.java
public class MainRecyclerAdapter extends RecyclerView.Adapter {
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_view_main, parent, false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
holder.mButton.setText("Item " + position);
if(holder.mRecyclerView.getAdapter()==null) {
holder.mRecyclerView.setAdapter(new GridAdapter());
}/*else {
holder.mRecyclerView.getAdapter().notifyDataSetChanged();
}*/
}
@Override
public int getItemCount() {
return 10;
}
public static class ViewHolder extends RecyclerView.ViewHolder {
public final AppCompatButton mButton;
public final RecyclerView mRecyclerView;
public ViewHolder(View itemView) {
super(itemView);
mButton = (AppCompatButton) itemView.findViewById(R.id.button);
mRecyclerView = (RecyclerView) itemView.findViewById(R.id.recyclerView);
RecyclerView.LayoutManager manager = new GridLayoutManager(itemView.getContext(), 4);
manager.setAutoMeasureEnabled(true);
mRecyclerView.setLayoutManager(manager);
}
}
}
注意が必要なのはGridLayoutManagerがsettAutoMeasureEnabled(true)を適応高さに設定することです***
onBindViewではitemのrecyclerviewにアダプタが設定されているかどうかを判断する必要がありますが、設定を繰り返すとスライドがスムーズになりません***
GridAdapter.java
public class GridAdapter extends RecyclerView.Adapter {
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_view_grid, parent, false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
holder.mTextView.setText("Grid "+position);
}
@Override
public int getItemCount() {
return 8;
}
public static class ViewHolder extends RecyclerView.ViewHolder {
public final AppCompatTextView mTextView;
public ViewHolder(View itemView) {
super(itemView);
mTextView= (AppCompatTextView) itemView.findViewById(R.id.textView);
}
}
}
作者:プロセスリンク:https://www.jianshu.com/p/e35d0c39cd91出典:簡書簡書の著作権は著者の所有であり、いかなる形式の転載も著者に連絡して授権を得て出典を明記してください.