实现一个列表只需一行代码-RecyclerView适配器暴力封装
来源:互联网 发布:桂正和is知乎 编辑:程序博客网 时间:2024/06/16 13:31
我们平时要实现一个列表的功能。通常第一步要创建一个Adapter类,创建相应的ViewHolder类,然后实现各种回调方法,想想就比较繁琐。貌似做了好多重复的工作。今天就封装了下adapter。只需短短几行代码,就可以实现列表的功能。话不多说,直接上代码。可以直接去github上下载。如果你觉得实用,简单,欢迎评论反馈。支持一下。感谢。
BaseAdapter的关键代码:
@Override public BaseViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = LayoutInflater.from(parent.getContext()).inflate(layoutResId, parent, false); return new BaseViewHolder(view); } @Override public void onBindViewHolder(BaseViewHolder holder, int position) { onBindViewHolder(holder, mData, position); }
这个类总共编写的代码就只有6行。
BaseViewHolder的关键代码:
/** * 根据资源id得到view * @param resId 控件id * @param <T> view * @return view */ public <T extends View> T getView(int resId){ View v =mViews.get(resId); if (v==null){ v=itemView.findViewById(resId); mViews.put(resId,v); } return (T) v; } /** * 直接设置textview的text * @param resId 控件id * @param text 显示内容 * @return 本类 */ public BaseViewHolder setText(int resId,String text){ View v =mViews.get(resId); if (v==null){ v=itemView.findViewById(resId); mViews.put(resId,v); } ((TextView)v).setText(text); return this; } /** * 直接设置ImageView的src * @param resId 控件id * @param drawableId 图片id * @return 本类 */ public BaseViewHolder setImage(int resId, int drawableId){ View v =mViews.get(resId); if (v==null){ v=itemView.findViewById(resId); mViews.put(resId,v); } ((ImageView)v).setImageResource(drawableId); return this; }
可通过getView()方法获取所有控件绑定数据。也可拓展相应的方法(比如,setText,setImage),可实现链式绑定。
我们平时用的时候上面BaseAdapter和BaseViewHolder两个类基本是不动的。
激动人心的时刻马上要到了,下边我们展示下。
ItemBean测试类:
public class ItemBean { public String name; public int resId=R.mipmap.ic_launcher;}
实现第一种方式:
recyclerView.setAdapter(new BaseAdapter<ItemBean>(R.layout.layout_item,data) { @Override public void onBindViewHolder(BaseViewHolder holder, ArrayList<ItemBean> data, int position) { ((TextView)holder.getView(R.id.tvName)).setText(data.get(position).name); ((ImageView)holder.getView(R.id.img)).setImageResource(data.get(position).resId); } });
是不是特别简单。接下来我们看下第二种方式:
recyclerView.setAdapter(new BaseAdapter<ItemBean>(R.layout.layout_item,data){ @Override public void onBindViewHolder(BaseViewHolder holder, ArrayList<ItemBean> data, int position) { holder.setText(R.id.tvName,data.get(position).name).setImage(R.id.img,data.get(position).resId); } });
这样下来,我们需要实现一个列表适配器,只需要编写一行代码就可以实现。是不是特别简单。
如果有自己的需求或者代码量特别大,可以单独出一个类 处理。
阅读全文
0 0
- 实现一个列表只需一行代码-RecyclerView适配器暴力封装
- 封装弹性dialog框架,使用只需一行代码
- 对于《第一行代码》中的RecyclerView中的一个列表间距太远(占据一个界面)的问题
- RecyclerView嵌套RecyclerView只显示一行
- 对主流框架OKHttp的封装,达到一行代码实现一个业务逻辑
- RecyclerView Adapter 优雅封装,一个Adapter搞定所有列表
- 只需一行代码就能让IE6崩溃
- 一行代码实现RecyclerView的多选批量操作
- 只使用一个适配器
- Java Excel操作工具类,创建一个Excel,只需一行代码。
- recyclerview 只显示一行 宽度不适配
- 解决:RecyclerView只显示一行数据
- RecyclerView只显示第一行的bug
- ScrollView 嵌套RecyclerView只显示一行
- Android在RecyclerView/ScrollView中嵌套一个GridView或者recyclerView时只显示一行的原因及解决方法
- 一行js代码!实现一个简洁表格
- 封装RecyclerView的基础适配器BaseAdapter
- 基于SQLite3轻量级封装,一行代码实现增删改查
- 软件工程之软件开发方法、软件工具和开发环境
- MyBeatis实现数据库的增删改查(CRUD)
- POJ 3279
- C.Primer.Plus(第六版)第17章 编程练习
- Android AIDL 使用详解
- 实现一个列表只需一行代码-RecyclerView适配器暴力封装
- 水经微图功能简介
- kylin使用中曾遇到的问题整理
- SEO优化知识心得
- jsp前端页面调试快捷键
- springboot jar 后台运行 sh
- POJ 1088
- 让你的代码量减少3倍!使用kotlin开发Android(一) 创建Kotlin工程
- 【二分图最大匹配-匈牙利算法及其优化算法模板】