web-dev-qa-db-fra.com

Quelle est la bonne façon de Android View Binding dans la classe d'adaptateur RecyclerView?)

Voici le code que j'ai utilisé dans ma classe d'adaptateur RecycleView. Je ne sais pas que c'est la bonne façon ou non d'utiliser la liaison de vue. Si vous avez une meilleure solution, répondez-moi. Je vous remercie.

@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(),"");
            }
        });
    }
}

Aussi, je veux savoir s'il est juste d'utiliser R.layout.layout_name et ViewBinding dans la même classe.

5
Vijay Villiers

Vous pouvez créer CommonCircleImageBinding directement dans onCreateViewHolder par CommonCircleImageBinding.inflate(LayoutInflater.from(parent.getContext()))

Puis transmettez-le à MyViewHolder

0
Nam Đỗ