RecyclerView加载不同类型的布局
来源:互联网 发布:暂七师军乐队 知乎 编辑:程序博客网 时间:2024/04/19 16:14
RecyclerView有什么优点以及和ListView有什么区别就不多说了,今天来实现RecyclerView的不同item布局效果,直接上图:
实现的思路是为数据添加一个type,根据type的值来判定getItemViewType返回的类型。getItemViewType(int position)返回的值就是onCreateViewHolder(ViewGroup parent, int viewType)的参数viewType,所以根据不同的值加载不同的布局。代码如下:
public class MyAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>{ public static enum ITEM_TYPE{ ITEM_TYPE_LEFT, ITEM_TYPE_RIGHT; } private LayoutInflater layoutInflater; private Context context; private List<Content> contents; public MyAdapter(Context c, List<Content> strs){ layoutInflater = LayoutInflater.from(c); context = c; contents = strs; } @Override public int getItemCount() { return contents != null ? contents.size() : 0; } @Override public int getItemViewType(int position) { return contents.get(position).getType() == 0 ? ITEM_TYPE.ITEM_TYPE_LEFT.ordinal() : ITEM_TYPE.ITEM_TYPE_RIGHT.ordinal() ; } @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { if(viewType == ITEM_TYPE.ITEM_TYPE_LEFT.ordinal()){ return new LeftViewHolder(layoutInflater.inflate(R.layout.item_text_left,parent,false)); }else{ return new RightViewHolder(layoutInflater.inflate(R.layout.item_text_right,parent,false)); } } @Override public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { if(holder instanceof LeftViewHolder){ ((LeftViewHolder) holder).tv_left.setText(contents.get(position).getMessage()); }else if(holder instanceof RightViewHolder){ ((RightViewHolder) holder).tv_right.setText(contents.get(position).getMessage()); } } public static class LeftViewHolder extends RecyclerView.ViewHolder{ public TextView tv_left; public LeftViewHolder(View v){ super(v); tv_left = (TextView)v.findViewById(R.id.tv_left); } } public static class RightViewHolder extends RecyclerView.ViewHolder{ public TextView tv_right; public RightViewHolder(View v){ super(v); tv_right = (TextView)v.findViewById(R.id.tv_right); } }}
0 0
- RecyclerView加载不同类型的布局
- 使用RecyclerView结合jiaozivideoplayer去加载不同类型的布局
- Android RecyclerView 加载更多数据 及 不同类型itemView的使用
- recyclerview加载不同的布局
- RecyclerView的加载显示多种布局
- CoordinatorLayout +RecyclerView+加载不同布局的item
- RecyclerView的加载显示多种布局
- RecyclerView的加载显示多种布局
- CoordinatorLayout +RecyclerView+加载不同布局的item
- RecyclerView显示加载多种布局的原理
- RecyclerView的加载显示多种布局
- 自己总结的Recyclerview加载不同布局
- RecyclerView的加载显示多种布局
- RecyclerView加载不同布局
- RecyclerView多布局加载
- RecyclerView加载不同布局
- RecycleView加载不同类型的Item
- RecyclerView加载两套布局
- Android 开发,关于依赖库的制作,打包aar,及使用过程
- ZigBee_2530初学笔记
- pyspark + mongodb
- 学习运维——虚拟机管理
- 自动配置ssh公私钥
- RecyclerView加载不同类型的布局
- Oracle数据库的归档模式与非归档模式
- spring+mybatis+spring-mvc
- 廖雪峰的Python教程学习笔记一Python简介和基础语法
- FCM(Fuzzy C-Means)模糊C聚类
- Android Studio导入项目的遇到的两个问题
- 如何在Eclipse下查看JDK源代码以及java源代码阅读方法
- 使用VMware安装CentOS7详请
- App Store 被拒 PLA 1.2