博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android DataBinding使用2-Recycleview
阅读量:4056 次
发布时间:2019-05-25

本文共 3561 字,大约阅读时间需要 11 分钟。

使用Databinding使用Recycleview

核心-根据xml的binding找到recycleview,然后和之前一样给他设置adapter等,区别是对于viewholder的处理,之前的viewholder里面是view,现在里面是viewbinding,绑定关系也在这里面进行绑定

1.页面的xml

2.子view的xml

3.adapter

public class RecycleviewAdapter extends RecyclerView.Adapter
{ public List
mList; public Context mContext; public RecycleviewAdapter(List
mList, Context mContext) { this.mList = mList; this.mContext = mContext; } @NonNull @Override public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int viewType) { //注意点-1 ItemBinding itemBinding = DataBindingUtil.inflate(LayoutInflater.from(mContext), R.layout.item, viewGroup, false); RecycleviewHolder_Title recycleviewHolder_title = new RecycleviewHolder_Title(itemBinding.getRoot()); recycleviewHolder_title.setItemBinding(itemBinding); return recycleviewHolder_title; } @Override public int getItemViewType(int position) { return 0; } @Override public void onBindViewHolder(@NonNull RecyclerView.ViewHolder viewHolder, final int i) { User dataBean = mList.get(i); //注意点-2 这里和之前的使用类似 和activity里面设置数据源是一样的道理 RecycleviewHolder_Title recycleviewHolder_title = (RecycleviewHolder_Title) viewHolder; ; recycleviewHolder_title.itemBinding.setItem(dataBean); ///避免闪烁 recycleviewHolder_title.itemBinding.executePendingBindings(); recycleviewHolder_title.itemBinding.setOnItemClickListener(onItemClickListener); } @Override public int getItemCount() { if (mList == null || mList.size() == 0) { return 0; } return mList.size(); } class RecycleviewHolder_Title extends RecyclerView.ViewHolder { private ItemBinding itemBinding; public RecycleviewHolder_Title(@NonNull View itemView) { super(itemView); } public void setItemBinding(ItemBinding itemBinding) { this.itemBinding = itemBinding; } } private OnItemClickListener onItemClickListener; ; public void setOnItemClickListener(OnItemClickListener onItemClickListener) { this.onItemClickListener = onItemClickListener; } public interface OnItemClickListener { public void onClick(User index); }}

4.使用

//设置recycleview的数据        datas = new ObservableArrayList<>();        for (int i = 0; i < 5; i++) {            User user = new User();            user.setName("第" + (i + 1) + "的名字");            user.setPass("第" + (i + 1) + "的密码");            datas.add(user);        }//实例化adapter        recycleviewAdapter = new RecycleviewAdapter(datas, MainActivity.this);        recycleviewAdapter.setOnItemClickListener(new RecycleviewAdapter.OnItemClickListener() {            @Override            public void onClick(User index) {                Log.e("点击的位置", index.getName() + "");                for (int i = 0; i < 5; i++) {                    User user = new User();                    user.setName("点击后" + (i + 1) + "的名字");                    user.setPass("点击后" + (i + 1) + "的密码");                    datas.add(user);                    recycleviewAdapter.notifyDataSetChanged();                }            }        });        //给recycleview设置adapter等        activityMainBinding.recycleview.setAdapter(recycleviewAdapter);        activityMainBinding.recycleview.setLayoutManager(new LinearLayoutManager(this,                LinearLayoutManager.VERTICAL, false));

 

转载地址:http://vxeci.baihongyu.com/

你可能感兴趣的文章
C++报错:写入位置 0xCCCCCCCC 时发生访问冲突。
查看>>
C++报错:引发了未经处理的异常:写入访问权限冲突, p 是 0xCCCCCCCC
查看>>
【数据结构周周练】002顺序表与链表
查看>>
C++报错:C4700:使用了非初始化的局部变量
查看>>
【数据结构周周练】003顺序栈与链栈
查看>>
【数据结构周周练】004顺序栈与链栈 -数制转换
查看>>
C++函数返回值介绍(含return 0 与 return 1 与 return -1介绍)
查看>>
C++报错:读取位置 0xFFFFFFFFFFFFFFFF 时发生访问冲突
查看>>
【数据结构周周练】005顺序队列与链队 -扑克牌的筛选
查看>>
【数据结构周周练】006队列基本操作-顺序结构及链式结构实现
查看>>
C++类、结构体、函数、变量等命名规则详解
查看>>
【数据结构周周练】007顺序结构实现完全二叉树操作- 求编号i与j最近公共祖先结点
查看>>
C++ goto语句详解
查看>>
【数据结构周周练】008 二叉树的链式创建及测试
查看>>
【数据结构周周练】009 二叉树的先序、中序、后序遍历(递归算法实现)
查看>>
【数据结构必备基本知识】递归与迭代的联系、区别与优缺点对比详解
查看>>
【数据结构周周练】010 递归算法实现二叉树的创建与遍历
查看>>
【数据结构周周练】011 非递归算法实现二叉树的遍历
查看>>
【数据结构周周练】012 利用队列和非递归算法实现二叉树的层次遍历
查看>>
【数据结构周周练】013 利用栈和非递归算法求二叉树的高
查看>>