Android开发笔记(二十八)viewBinding在adapter中的用法

在普通的activity和fragment里用很简单就不记了,这里写个在adpater里用的例子
使用前gradle:

android {
    ...
    viewBinding{ enabled true}
}

如下,ItemHomeBinding这个类是根据你的layout名字自动生成的;
这里我用的PagedList所以这么写,同理可以可以改成RecyclerView.Adapter或者listadapter;
viewBinding.getRoot()就相当于以前的itemView

/**
 * Created by kusunoki on 2020/5/24 0024 13:48.
 */
public class BaseStatusAdapter  extends PagedListAdapter<StatusBean, BaseStatusAdapter.BaseViewHolder> {
    Context context;

    protected BaseStatusAdapter() { // 这里是查重方式,自己写
        super(new DiffUtil.ItemCallback<StatusBean>() {
            @Override
            public boolean areItemsTheSame(@NonNull StatusBean oldItem, @NonNull StatusBean newItem) {
                return oldItem.getId() == newItem.getId();
            }

            @Override
            public boolean areContentsTheSame(@NonNull StatusBean oldItem, @NonNull StatusBean newItem) {
                return oldItem.getText().equals(newItem.getText()); /
            }
        });
    }

    static class BaseViewHolder extends RecyclerView.ViewHolder { // viewHolder只需要这几句,就很爽
        ItemHomeBinding binding;
        public BaseViewHolder(@NonNull ItemHomeBinding viewBinding) {
            super(viewBinding.getRoot());
            binding = viewBinding;
        }
    }
    
    @NonNull
    @Override
    public BaseViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { // 这里也只需要这几句,context之后要用所以留下来了
        context = parent.getContext();
        ItemHomeBinding viewBinding = ItemHomeBinding.inflate(LayoutInflater.from(parent.getContext()),parent,false);
        BaseViewHolder holder = new BaseViewHolder(viewBinding);
        return holder;
    }

    @Override
    public void onBindViewHolder(@NonNull BaseViewHolder holder, int position) {
        holder.binding.tvHometext.setText("文字"); // 直接用
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容