RecyclerViewアダプタクラスにバインドAndroidのビューの正しい方法は何ですか?

ビジェイ・ヴィリエ:

ここで私は私の中で使用されるコードである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_nameViewBinding同じクラスに。

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 ;
    }
}

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=292030&siteId=1