ビジェイ・ヴィリエ:
ここで私は私の中で使用されるコードである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
同じクラスに。
Someshクマール:
何をする必要がホルダークラスのコンストラクタに生成されたバインディング・クラスのオブジェクトを渡すです。あなたの例では、あなたは持っているcommon_circle_image
ためにXMLファイルをRecyclerView
項目と生成されたクラスがある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);
}
あなたがこれらのフィールドを使用できるようにし、このようにホルダークラスを使用します 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 ;
}
}