本文共 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/