Android DataBinding使用2-Recycleview

使用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));

 

你可能感兴趣的:(Android)