2017-08-18 1 views
-1

enter image description hereSetText intérieur OnCreateViewHolder définit le texte sur plus d'un article

Lorsque je clique sur le signe de l'incrément sur l'élément, il faut augmenter le nombre i cliqué pour seulement cet élément à. Cependant, je défile vers le bas et je trouve que d'autres éléments sont également incrémentés.

Voici mon code

public class CartAdapter extends RecyclerView.Adapter<MyViewHolder> { 

private Context mContext; 
private List<Dish> dishList; 
private CartFragment fra; 






public CartAdapter(Context mContext, List<Dish> dishList, CartFragment fragment) { 
    this.mContext = mContext; 
    this.dishList = dishList; 
    this.fra=fragment; 
} 

@Override 
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
    View itemView = LayoutInflater.from(parent.getContext()) 
      .inflate(R.layout.card_cart, parent, false); 

    final MyViewHolder holder = new MyViewHolder(itemView); 
    holder.inc.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 

      int i=Integer.parseInt(holder.number.getText().toString())+1; 
      holder.number.setText(i+""); 
      //fra.addPrice(p); 

     } 
    }); 

    holder.dec.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 

      if(Integer.parseInt(holder.number.getText().toString())>1){ 
       int i=Integer.parseInt(holder.number.getText().toString())-1; 
       holder.number.setText(i+""); 
       //fra.addPrice(-p);} 

      } 
     }}); 
    return new MyViewHolder(itemView); 
} 

@Override 
public void onBindViewHolder(final MyViewHolder holder, int position) { 
    Dish dish = dishList.get(position); 
    holder.name.setText(dish.getName()); 
    holder.ing.setText(dish.getIngredients()); 
    holder.price.setText(dish.getPrice()); 

} 

@Override 
public int getItemCount() { 
    return dishList.size(); 
} 

Quel est le problème?

J'ai essayé d'appeler onClickListener dans la vue bind mais le même bogue persiste.

+0

nouvelle MyViewHolder retour (itemView) de onCreateViewHolder après le gonflage de la mise en page et réglez l'auditeur de clic dans la classe MyViewHolder –

+0

@NongthonbamTonthoi Je l'ai essayé aussi bien mais Le problème est toujours là. Il duplique tous les 6 éléments – ghumdan16

Répondre

0

J'ai trouvé la solution.

J'ai besoin de passer outre ces deux méthodes dans mon adaptateur

@Override 
public long getItemId(int position) { 
    return position; 
} 
@Override 
public int getItemViewType(int position) { 
    return position; 
}