2017-08-18 2 views
-1

enter image description hereSetText innerhalb OnCreateViewHolder setzt Text auf mehr als ein Element

Wenn ich die Zeichen Schritt klicken Sie auf den Punkt, sollte es die Nummer nur für diesen Punkt erhöht i an geklickt. Allerdings scrolle ich nach unten und ich finde einige andere Elemente werden ebenfalls erhöht.

Hier ist mein 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(); 
} 

Was ist das Problem?

Ich habe versucht, den OnClickListener auf der Bindungsansicht aufrufen, aber der gleiche Fehler weiterhin auftritt.

+0

Rückkehr neue MyViewHolder (itemView) von onCreateViewHolder nach dem Layout Aufblasen und legen Sie den Hörer Klick in der MyViewHolder Klasse –

+0

@NongthonbamTonthoi versuchte ich es auch außer Kraft zu setzen, aber das Problem besteht immer noch. Es dupliziert alle 6 Elemente – ghumdan16

Antwort

0

Ich fand die Lösung.

Ich brauche diese beiden Methoden in meinem Adapter

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