万能RecyclerView适配器
2015-09-30 12:02
169 查看
转载请声明:/article/8692448.html
相信用RecyclerView的人都知道,写RecyclerView adapter比listview的apdater繁琐,还有不带onItemClickedlistener,要自己手工去添加。
如果只有一个布局Item好说,但是如果让你添加header, footer, content ,group共存的adapter,而且又给它们手工添加点击事件,是不是很烦?
由于这个困恼,所以实现了个简单好用的工具类,提供注入写法加速项目开发。
添加导入:
项目下载github地址:https://github.com/Sam474850601/RecyclerViewAdapterDemo
定义一个item布局
holder的写法
adapter写法
使用:
是不是代码很简洁就实现了这个apdater?6不6? 多个布局请到github下载
相信用RecyclerView的人都知道,写RecyclerView adapter比listview的apdater繁琐,还有不带onItemClickedlistener,要自己手工去添加。
如果只有一个布局Item好说,但是如果让你添加header, footer, content ,group共存的adapter,而且又给它们手工添加点击事件,是不是很烦?
由于这个困恼,所以实现了个简单好用的工具类,提供注入写法加速项目开发。
添加导入:
compile 'com.github.sam474850601:samreclecerviewadapter:1.0.2'
项目下载github地址:https://github.com/Sam474850601/RecyclerViewAdapterDemo
定义一个item布局
adapter_layout_recyclerview
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/tv_data" android:text="111" /> </LinearLayout>
holder的写法
//注入item布局 @ConfigLayout(R.layout.adapter_layout_recyclerview) private static class ContentHolder implements HolderSerialize { //注入View的id ,让框架本身给它提供引用 @ConfigView(R.id.tv_data) TextView dataView; }
adapter写法
//泛型类别分别是内容,分组, 头部,尾部。部分不实现用Null代替 private class MyViewAdapter extends BaseRecyclerViewAdapter<ContentHolder,Null, Null, Null> { public MyViewAdapter(Context context) { super(context); } //列表内容每一项的绘制 @Override protected void onContentUpdate(ContentHolder holder, int position, Item item) { TextView dataView = holder.dataView; dataView.setText((String) item.data); } //列表的点击事件 @Override public void onContentClicked(View view, int position, Item item) { Toast.makeText(getApplicationContext(), ""+item.data, Toast.LENGTH_SHORT).show(); } }
使用:
MyViewAdapter adapter = new MyViewAdapter(this);recyclerView.setAdapter(adapter);
for(int i = 0; i < 10; i ++) { ContentItem item = new ContentItem(); item.data = ""+i; adapter.getItemList().add(item); } adapter.notifyDataSetChanged();
是不是代码很简洁就实现了这个apdater?6不6? 多个布局请到github下载
相关文章推荐
- 第一阶段面试总结
- js中获取basePath
- iOS开发——高级篇——内存分析,Instruments
- 如何获取Hadoop Native Lib
- 从零开始学YII2.0
- SVG小记——viewport,viewBox,preserveAspectRatio
- RAID 级别和特征
- Java中throws和throw的区别讲解
- Linux下ARM汇编语法(转载学习)
- 【软件工程】软工视频(一)概论
- javaweb项目部署问题集合
- jquery radio标签操作
- IE6/IE7下:inline-block解决方案
- netty服务器,客户端的开发
- php 微信开发之 微信支付 v3 配置
- 让并排的两个Div自适应高度(一样高)
- Java/C++_类的默认的初始值
- spring MVC 与 ajax 交互 json格式遇见的415、json解析错误
- linux awk命令详解
- NSTimer修改UIButton title时闪动问题