开发者社区> 问答> 正文

RecyclerView适配器类中Android View绑定的正确方法是什么?

这是我在RecycleView适配器类中使用的代码。我不知道这是正确的方法还是不使用视图绑定。如果您有更好的解决方案,请回答我。谢谢。

@Override
public CategoryAdapter.MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {

    View itemView = LayoutInflater.from(parent.getContext())
            .inflate(R.layout.common_circle_image, parent, false);

    return new MyViewHolder(itemView);
}

@Override
public void onBindViewHolder(@NonNull CategoryAdapter.MyViewHolder holder, final int position) {
    holder.binding.img.setBackgroundResource(addAdapterData.get(position).getItemUrl());
    holder.binding.txt.setText(addAdapterData.get(position).getItemName());
}

@Override
public int getItemCount() {
    return addAdapterData.size();
}

public class MyViewHolder extends RecyclerView.ViewHolder {

    CommonCircleImageBinding binding;

    public MyViewHolder(@NonNull View itemView) {
        super(itemView);
        binding = CommonCircleImageBinding.bind(itemView);
        binding.cardView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                commonItemClick.onItemClick(getAdapterPosition(),"");
            }
        });
    }
}

另外,我想知道的是它的使用权R.layout.layout_name,并ViewBinding在同一个班级。

问题来源:Stack Overflow

展开
收起
montos 2020-03-27 17:03:52 576 0
1 条回答
写回答
取消 提交回答
  • 您需要做的是将生成的绑定类对象传递给holder类的构造函数。在您的示例中,您有common_circle_image用于RecyclerView项目的XML文件,并且生成的类是CommonCircleImageBinding这样的,您可以使用onCreateViewHolder将该生成的绑定类传递给ViewHolder该类

    @NonNull
    @Override
    public CategoryAdapter.MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        CommonCircleImageBinding itemBinding = CommonCircleImageBinding .inflate(LayoutInflater.from(parent.getContext()), parent, false);
        return new MyViewHolder(itemBinding);
    }
    

    并使用这样的holder类,这样您就可以在 onBindViewHolder

    static class MyViewHolder extends RecyclerView.ViewHolder {
        private TextView txt;
        private ImageView img; 
    
        MyViewHolder(CommonCircleImageBinding itemBinding) {
            super(itemBinding.getRoot());
            img = itemBinding.img ;
            txt = itemBinding.txt ;
        }
    }
    

    回答来源:Stack Overflow

    2020-03-27 17:04:27
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
58同城Android客户端Walle框架演进与实践之路 立即下载
Android组件化实现 立即下载
蚂蚁聚宝Android秒级编译——Freeline 立即下载