RecyclerView万能的Adapter
2016-07-22 12:26
471 查看
RecyclerView万能的Adapter
如果使用了Data Binding Library框架,并使用了RecyclerView.可以使用这个Adapter不用在为每一个不同的布局写单独的Adapter
功能
添加HeaderView和FooterViewItem的Click事件处理
也可以添加额外的逻辑处理
使用
RecyclerView.setAdapter
item.xml<?xml version="1.0" encoding="utf-8"?> <layout> <data> <import type="android.view.View"/> <variable name="yourVariable" type="yourpacket.mode.XXX"/> </data> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" > <TextView ..................... android:text="@{yourVariable.xxx}" ..................... > </LinearLayout> </layout>
DataBindingRecyclerViewAdapter adapter = new DataBindingRecyclerViewAdapter (mContext,R.layout.item,BR.yourVariable,variableList); mRecyclerView.setAdapter(adapter);
setOnItemClick
adapter.setOnItemCkickListener(new DataBindingRecyclerViewAdapter.ItemClickListener(){ @Override public void itemClick(View view, int position) { //.................. } });
addHeader And addFooter
mRecyclerView.setAdapter(adapter); ..... LayoutInflater inflater = LayoutInflater.from(getContext()); View footerView = inflater.inflate(R.layout.recycler_view_load_more,binding.recyclerView,false); adapter.addFooterView(footerView); adapter.notifyDataSetChanged();
LayoutInflater inflater = LayoutInflater.from(getContext()); View footerView = inflater.inflate(R.layout.recycler_view_load_more,binding.recyclerView,false); adapter.addFooterView(footerView); mRecyclerView.setAdapter(adapter);
额外的逻辑处理
如果只给item添加一个variable还不够的话可以另外添加adapter.setOnBindingViewHolderListener(new DataBindingRecyclerViewAdapter.OnBindingViewHolderListener() { @Override public void onHolderBinding(DataBindingRecyclerViewAdapter.DataBindingViewHolder holder, int position) { ViewDataBinding binding = DataBindingUtil.getBinding(holder.itemView); binding.setVariable(BR.presenter,new MyPresenter()); } });
item.xml
<?xml version="1.0" encoding="utf-8"?> <layout> <data> <import type="android.view.View"/> <variable name="yourVariable" type="yourpacket.mode.XXX"/> <variable name="presenter" type="yourpacket.MyPresenter"/> </data> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" > <TextView ..................... android:text="@{yourVariable.xxx}" ..................... > <Button android:id="@+id/txtEdit" android:layout_width="wrap_content" android:layout_height="wrap_content" android:visibility="@{userCode.equals(story.createUCode)?View.VISIBLE:View.GONE}" android:onClick="@{(view)->presenter.edit(view,yourVariable)}" android:text="EDIT"/> <Button android:id="@+id/txtDelete" android:layout_width="wrap_content" android:layout_height="wrap_content" android:visibility="@{userCode.equals(story.createUCode)?View.VISIBLE:View.GONE}" android:onClick="@{(view) -> presenter.delete(view,yourVariable)}" android:text="DELETE"/> </LinearLayout> </layout>
源码地址 https://github.com/Doudada/DataBinding-Librar-RecyclerView-all-purpose-Adapter
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories