J'ai un recycler qui montre une liste d'articles, un prix et un statut. Lorsque je clique sur une carte, je souhaite qu'il affiche le prix de l'article que j'ai cliqué sur. Cependant, chaque fois que je clique. La carte renvoie les données d'autres cartes et aucune carte particulière que j'ai cliquée.
public class ItemAdapter extends RecyclerView.Adapter<ItemAdapter.ItemHolder> { private TextView viewName, viewPrice; private CheckBox viewAvailability; private Context context; private List<Item> listItems; @NonNull @Override public ItemAdapter.ItemHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { View view = LayoutInflater.from(context).inflate(R.layout.list_item, parent, false); return new ItemAdapter.ItemHolder(view); } @Override public void onBindViewHolder(@NonNull ItemAdapter.ItemHolder holder, int position) { Item item = listItems.get(position); holder.setDetails(item); } @Override public int getItemCount() { return listItems.size(); } public class ItemHolder extends RecyclerView.ViewHolder { public ItemHolder(final View itemView) { super(itemView); viewName = itemView.findViewById(R.id.viewName); viewPrice = itemView.findViewById(R.id.viewPrice); viewAvailability = itemView.findViewById(R.id.viewAvailability); itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { } }); } public void setDetails(Item item) { viewName.setText(item.getName()); viewPrice.setText(item.getPrice()); int as = item.getAvailabilityStatus(); if (as == 1) { viewAvailability.setChecked(true); } else { } } } public ItemAdapter(Context context, List<Item> objects) { this.context = context; this.listItems = objects; }
3 Réponses :
Essayez ce code, placez l'élément d'itemView onclick listner à l'intérieur de SetDétails
public void setDetails(Item item) { viewName.setText(item.getName()); viewPrice.setText(item.getPrice()); int as = item.getAvailabilityStatus(); if (as == 1) { viewAvailability.setChecked(true); } else { } itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { // here you will able to access valid item } }); }
Pouvez-vous expliquer la raison sir
Le questionneur, a utilisé la bonne approche là-bas pour effectuer le clic à l'intérieur du code> (code> code> ... Quelle est la raison derrière pour perforcer le clik à l'intérieur de la méthode code> méthode code>
Dans les méthodes de SetDetTails, un objet d'élément valide est transmis, donc si item.getName () et item.getprice () sont valables, puis cliquez sur Sûrement, il accédera à un objet d'élément approprié
instauré de itemView.setonclicklistener code> Utiliser définie clicklistener sur votre carte carte et utilisez
getAdapterposition () code> Pour suivre l'élément Vous cliquez sur
cardView= itemView.findViewById(R.id.cardView);
cardView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
int price = getThePrice(getAdapterPosition());
// use price here
}
});
Essayez ce code ... } p> p>
Où est le code que vous avez utilisé pour OnClick?
Inside Onclick, vous n'avez rien fait.
Votre méthode onclick à vide