2016-08-09 11 views
0

問題があります。増加ボタンをクリックすると、アイテム数も増加します。デクリメントボタンをクリックすると、同じ結果が得られます。私はArrayList<>を宣言するのはここです:私はRecyclerViewを整理するところRecyclerView内のインクリメントとデクリメント

public class MyAdapter extends RecyclerView.Adapter<MyHolder> { 

public static Context c; 
int quantity=0; 
public static int qty,cty,mty=0,qty1; 
public static int sendcost; 
public static String curry; 
MyHolder holder; 

public ArrayList<Integer> quantity1 = new ArrayList<Integer>(); 

private List<Spacecraft> spacecrafts = new ArrayList<>(); 
CustomButtonListener customButtonListener; 

private boolean mShowQuantity; 

public MyAdapter(Context c, ArrayList<Spacecraft> spacecrafts, boolean showQuantity) {//ArrayList<ShoppingCartEntry> showQuantity , boolean showQuantity 
    MyAdapter.c = c; 
    this.spacecrafts = spacecrafts; 
    this.mShowQuantity = showQuantity; 

    for(int i =0; i< spacecrafts.size();i++) 
    { 
     quantity1.add(0); 
     //quantity[i]=0; 
    } 

} 

これは、次のとおりです。ここで

@Override 
public MyHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
    View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.model, parent, false); 


    return new MyHolder(v); 
} 

@Override 
public void onBindViewHolder(final MyHolder holder, final int position) { 

    final Spacecraft s = spacecrafts.get(position); 



    holder.nameTxt.setText(s.getName()); 
    PicassoClient.downloadImage(c, s.getImageUrl(), holder.img); 
    holder.propellentTxt.setText(s.getPropellant()); 
    holder.descTxt.setText(s.getDescription()); 
    holder.carbohydratesTxt.setText(s.getCarbohydrates()); 
    holder.fatcontentTxt.setText(s.getFatcontent()); 
    holder.minaralsTxt.setText(s.getMinarals()); 
    holder.costTxt.setText("" + s.getCost()); 
    holder.rateTxt.getText().toString(); 

    try{ 

     holder.rateTxt.setText(quantity1.get(position)+""); 


    }catch(Exception e){ 
     e.printStackTrace(); 
    } 


    MyHolder.btn_plus.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 

      quantity = Integer.parseInt(holder.rateTxt.getText().toString()); 

      cty = Integer.parseInt(holder.costTxt.getText().toString()); 

      curry =holder.nameTxt.getText().toString(); 

      qty1 = 1; 

      quantity = quantity + 1; 


      holder.rateTxt.setText(String.valueOf(quantity));//quantity 

      sendcost = quantity * cty;//single item cost 


      mty = mty + cty * qty1;// Total Cost 




      MainActivity.Totalcost.setText("Total cost :" + String.valueOf(mty)); 

      ShoppingCartHelper.setQuantity(s, quantity); 


     } 
    }); 

は私の減少ボタンです:

MyHolder.btn_minus.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v1) { 

      qty1=1; 
      quantity = Integer.parseInt(holder.rateTxt.getText().toString()); 
      cty = Integer.parseInt(holder.costTxt.getText().toString()); 
      if(quantity == 0) 
      { 

      } 
      else 
      { 
       quantity = quantity - 1; 

       holder.rateTxt.setText(String.valueOf(quantity)); 

       mty =mty - cty*qty1; 



       MainActivity.Totalcost.setText("Total cost :" + String.valueOf(mty)); 



       ShoppingCartHelper.setQuantity(s, quantity); 


      } 




     } 



    }); 

    holder.quan.setVisibility(View.GONE); 
    return; 
} 

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

にする方法上の任意の提案ボタンの仕事を減らす?

+1

数量を増減するたびにarraylistを更新する必要があります。そして、リスト呼び出しを更新した後、notifyDataSetChanged(); –

+0

ありがとうございます。私はアンドロイドに新しいのでいくつかのコードを追加してください.... –

+1

quantity1.set(position、quantity); notifyDataSetChanged(); –

答えて

1

コメントの情報に基づいて、すべて正確です。数量を増減するたびにArrayList<>を更新する必要があります。あなたは、あなたがあなたのようなRecyclerViewのアダプタに通知する必要があることを実行した後ので:

quantity1.set(position, quantity); 
notifyDataSetChanged(); 

あなたがArrayList<>を更新すると、行われたすべての新しい変更がRecyclerViewに表示されます。

+0

私は試しました。しかし、正しく動作しませんでした。 –

+0

それから、あなたが把握しなければならないコードに何か間違ったものがなければならない。 – Razor

+0

大丈夫です、私は見て、私はコードを更新します.. –

関連する問題