0
votes

Comment réparer mon onglick cardview qui retourne d'autres chiffres

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 commentaires

Où est le code que vous avez utilisé pour OnClick?


Inside Onclick, vous n'avez rien fait.


Votre méthode onclick à vide


3 Réponses :


0
votes

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


3 commentaires

Pouvez-vous expliquer la raison sir


Le questionneur, a utilisé la bonne approche là-bas pour effectuer le clic à l'intérieur du (code> ... Quelle est la raison derrière pour perforcer le clik à l'intérieur de la méthode méthode


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é



0
votes

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


0 commentaires

0
votes

Essayez ce code ... xxx

}


0 commentaires