Android(安卓)RecyclerView多布局的实现
16lz
2021-01-26
主要操作实在Adapter中的。区别于正常RecyclerView的Adapter。首先是定义几个全局的变量来标识有几种布局。
然后除了正常的方法之外,还要重写getItemViewType的方法,其中根据不同的判断条件来返回不同的结果。
public static final int ONE_ITEM = 1;public static final int TWO_ITEM = 2;public static final int THREE_ITEM = 3;
然后除了正常的方法之外,还要重写getItemViewType的方法,其中根据不同的判断条件来返回不同的结果。
@Override public int getItemViewType(int position) { if (list.get(position).getFromtype().equals("2")) { return TWO_ITEM; } else if (list.get(position).getFromtype().equals("1")) { return ONE_ITEM; } else { return THREE_ITEM; } }
在onCreateViewHolder中也要进行区分,以加载不同的item布局(有几种布局就创建几个ViewHolder)。 @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { // 给ViewHolder设置布局文件 RecyclerView.ViewHolder holder = null; if (ONE_ITEM == viewType) { View v = inflater.inflate(R.layout.layout_dbxianshi, parent, false); holder = new ViewHolder1(v); } else if (TWO_ITEM == viewType) { View v = inflater.inflate(R.layout.layout_dbshenhe, parent, false); holder = new ViewHolder2(v); } else { View v = inflater.inflate(R.layout.layout_dbfj, parent, false); holder = new ViewHolder3(v); } return holder; }
最后在onBindViewHolder中对每种布局进行不同的操作。 @Override public void onBindViewHolder(final RecyclerView.ViewHolder holder, final int position) { DBXQModel model = list.get(position); if (holder instanceof ViewHolder1) { ((ViewHolder1) holder).label.setText(model.getLabel()); ((ViewHolder1) holder).content.setText(model.getContent()); } else if (holder instanceof ViewHolder2) { ((ViewHolder2) holder).label.setText(model.getLabel()); ((ViewHolder2) holder).content.setText(model.getContent()); ((ViewHolder2) holder).name.setText(model.getName()); ((ViewHolder2) holder).time.setText(model.getTime()); } else { ((ViewHolder3) holder).name_fj.setText(model.getLabel()); } holder.itemView.setTag(position); }
更多相关文章
- Android中对/data/data//files下文件的读写操作
- android 自定义ActionBar
- cocos2d-js如何在android平台上使用js直接调用Java方法
- Android(安卓)使用Pull方法解析XML文件的方法
- android 五大布局-线性布局(LinearLayout)
- Android中的信使Messenger的源码解析
- (四十三)统计应用具体方法执行时长-Android(安卓)Profiler CPU
- Android(安卓)横向列表GridView 实现横向滚动
- Android开发:LayoutParams的用法