RecyclerView万能的Adapter

RecyclerView万能的Adapter

如果使用了Data Binding Library框架,并使用了RecyclerView.可以使用这个Adapter
不用在为每一个不同的布局写单独的Adapter

功能

  • 添加HeaderView和FooterView
  • Item的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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值