RecyclerViewAdapter 使用教程

来源:互联网 发布:太原java薪资待遇如何 编辑:程序博客网 时间:2024/06/04 20:03

1. gradle 添加依赖

 compile 'com.asange.recyclerviewadapter:lib_recyclerview_adapter:1.0.5'
最新版本 参考:点击打开链接


2.项目介绍

 为了简化recylerview 写适配器的复杂度,有不想用其他第三方依赖 太多组件,所以写了这个开源项目,不足40k,极大的减少了Apk的体积;
   特性:
   1.简单,体积小
   2.可以自由添加header footer
   3. 事件绑定比较完善

  主要分为2个类:com.asange.recyclerviewadapter.BaseRecyclerAdapter与com.asange.recyclerviewadapter.MultiRecyclerAdapter(多布局展示,如聊天左右item布局)

3. 实例:
package com.asange.recyclerviewadapter.demo;/** * Description * Company Beijing icourt * author  youxuan  E-mail:xuanyouwu@163.com * date createTime:2017/10/4 * version 2.1.0 */public class User {    private int age;    private String name;    private boolean isItemSelected;    public User(int age, String name) {        this.age = age;        this.name = name;    }    public int getAge() {        return age;    }    public void setAge(int age) {        this.age = age;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }}

package com.asange.recyclerviewadapter.demo;import android.support.annotation.Nullable;import android.view.View;import android.widget.Button;import android.widget.CheckBox;import android.widget.TextView;import com.asange.recyclerviewadapter.BaseRecyclerAdapter;import com.asange.recyclerviewadapter.BaseViewHolder;import com.asange.recyclerviewadapter.OnItemClickListener;import com.asange.recyclerviewadapter.SelectableBaseAdapter;/** * Description * Company Beijing icourt * author  youxuan  E-mail:xuanyouwu@163.com * date createTime:2017/10/4 * version 2.1.0 */public class UserAdapter extends SelectableBaseAdapter<User> implements OnItemClickListener {    public UserAdapter() {        this.setOnItemClickListener(this);    }    @Override    public int bindView(int viewType) {        return R.layout.item_user;    }    @Override    public void onBindHolder(BaseViewHolder holder, @Nullable User user, int index) {        if (user == null) return;        TextView userNameTv = holder.obtainView(R.id.userNameTv);        TextView userAgeTv = holder.obtainView(R.id.userAgeTv);        Button updateBtn = holder.obtainView(R.id.updateBtn);        Button delBtn = holder.obtainView(R.id.delBtn);        Button clickBtn = holder.obtainView(R.id.clickBtn);        userNameTv.setText("name:" + user.getName());        userAgeTv.setText("age:" + user.getAge());        holder.bindChildClick(updateBtn)                .bindChildClick(delBtn)                .bindChildClick(clickBtn);        CheckBox userCb = holder.obtainView(R.id.userCb);        userCb.setChecked(user.isItemSelected());    }    @Override    public void onItemClick(BaseRecyclerAdapter adapter, BaseViewHolder holder, View itemView, int index) {    }}

继承BaseRecylerAdapter 需要复写2个方法:
1.bindView(int viewType) 需要返回一个view的资源id,参数viewType 可以分类别返回不同的布局id,默认viewType=0,需要扩张则需要复写getViewType 方法
2.onBindHolder(BaseViewHolder holder,@NullableUser user, intindex) 方法

/**     * 初始化item     *     * @param holder     * @param t     * @param index  相对于List的位置     */    public abstract void onBindHolder(BaseViewHolder holder, @Nullable T t, int index);

是初始化item布局的方法,t对应着范型的实体,index 从0开始的位置,非adapter的pos,因为可能包含header

获取item布局的child 
TextView userNameTv = holder.obtainView(R.id.userNameTv);

默认item的更根布局已经绑定了onItemClick与onItemLongClick
child的点击和长按 则需要主动绑定:

holder.bindChildClick(updateBtn)        .bindChildLongClick(updateBtn);


点击事件:
public void setOnItemClickListener(OnItemClickListener l) {        this.onItemClickListener = l;    }    public void setOnItemLongClickListener(OnItemLongClickListener l) {        this.onItemLongClickListener = l;    }    public void setOnItemChildLongClickListener(OnItemChildLongClickListener l) {        this.onItemChildLongClickListener = l;    }    public void setOnItemChildClickListener(OnItemChildClickListener l) {        this.onItemChildClickListener = l;    }


1. OnItemClickListener 适配器item 点击事件 也就是item 根布局的点击事件
2.OnItemLongClickListener  适配器item 长按事件 也就是item 根布局的长按事件
3. OnItemChildClickListener  适配器item child 点击事件 是item布局中子view的点击事件
4.
OnItemChildLongClickListener  适配器item child 长按事件 是item布局中子view的长按事件


demo 点击这里
  运行效果:


原创粉丝点击