2016-08-10 1 views
0

に製品の数量をインクリメントとデクリメントしたい私は、リストビューは、特定の行のリストビューで、製品の量を増減したいていました。あなたにこれを行うように案内してくださいは、リストビュー

public class ProductsAdapter extends BaseAdapter { 

    private Context context; 
    private ArrayList<HashMap<String, String>> postItems; 
    public SharedPreferences settings; 
    public final String PREFS_NAME = "Products"; 

    private MyCart cart; 
    private HashMap<String, String> selected_product; 

    DisplayImageOptions options; 
    ImageLoaderConfiguration imgconfig; 
    private static int _counter = 1; 
    private String _stringVal; 


    public ProductsAdapter(Context context, ArrayList<HashMap<String, String>> arraylist){ 
     this.context = context; 

     File cacheDir = StorageUtils.getCacheDirectory(context); 
     options = new DisplayImageOptions.Builder() 
     .showImageOnLoading(R.drawable.loading) 
     .showImageForEmptyUri(R.drawable.loading) 
     .showImageOnFail(R.drawable.loading) 
     .cacheInMemory(true) 
     .cacheOnDisk(true) 
     .considerExifParams(true) 
     .displayer(new SimpleBitmapDisplayer()) 
     .imageScaleType(ImageScaleType.EXACTLY) 
     .build(); 

     imgconfig = new ImageLoaderConfiguration.Builder(context) 
     .build(); 
     ImageLoader.getInstance().init(imgconfig); 

     postItems = arraylist; 
     settings = context.getSharedPreferences(PREFS_NAME, 0); 

     selected_product = new HashMap<String,String>(); 

     cart=new MyCart(context.getApplicationContext()); 

    } 

    @Override 
    public int getCount() { 
     return postItems.size(); 
    } 
    @Override 
    public Object getItem(int position) {  
     return postItems.get(position); 
    } 

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

    @Override 
    public View getView(final int position, View convertView, ViewGroup parent) { 

      if (convertView == null) { 
       LayoutInflater mInflater = (LayoutInflater) 
       context.getSystemService(Activity.LAYOUT_INFLATER_SERVICE); 
       convertView = mInflater.inflate(R.layout.row_products, null); 
      } 
      HashMap<String, String> map = postItems.get(position); 


      ImageView imgProduct = (ImageView)convertView.findViewById(R.id.proimage); 
      ImageLoader.getInstance().displayImage(ConstValue.PRO_IMAGE_BIG_PATH+map.get("image"), imgProduct, options, animateFirstListener); 

      TextView txtTitle = (TextView)convertView.findViewById(R.id.proTitle); 
      txtTitle.setText(map.get("title")); 

      TextView txtPrice = (TextView)convertView.findViewById(R.id.txtprice); 
      txtPrice.setText(map.get("price")); 

      TextView textDiscount = (TextView)convertView.findViewById(R.id.textDiscount); 
      textDiscount.setVisibility(View.GONE); 

      TextView txtDiscountFlag = (TextView)convertView.findViewById(R.id.textDiscountFlag); 
      txtDiscountFlag.setVisibility(View.GONE); 

      TextView textCurrency = (TextView)convertView.findViewById(R.id.textCurrency); 
      textCurrency.setText(map.get("currency")); 

      final TextView value = (TextView)convertView.findViewById(R.id.textView3); 

      final Button txtminus = (Button) convertView.findViewById(R.id.minus); 

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


        Log.d("src", "Decreasing value..."); 
        _counter--; 
        _stringVal = Integer.toString(_counter); 
        value.setText(_stringVal); 

        selected_product = (HashMap<String, String>) postItems.get(position); 
        selected_product.put("qty", _stringVal); 
        cart.remove_to_cart(selected_product); 
       } 

      }); 

      Button txtplus = (Button) convertView.findViewById(R.id.plus); 
      txtplus.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 


        Log.d("src", position + "Increasing value..."); 
        Log.d("Position", position + "position"); 

        _counter++; 
        _stringVal = Integer.toString(_counter); 
        value.setText(_stringVal); 

        selected_product = (HashMap<String, String>) postItems.get(position); 
        selected_product.put("qty", _stringVal); 
        cart.add_to_cart(selected_product); 


      } 
      }); 

public class ProductsAdapter extends BaseAdapter { 

答えて

0

現在の設定にはカウンタの変数が1つしかありません。リストビューの行ごとに変数が必要です。私は、位置値にボタンをマッピングするいくつかのハッシュマップの作成をお勧めします:

private HashMap<Button, Integer> decrementButtons; 
private HashMap<Button, Integer> incrementButtons; 
private HashMap<Integer, Integer> positionCount; 

public view getView(final int position, ....) { 
    ... //Stuff above 
    decrementButtons.put(txtminus, position); 
    incrementButtons.put(txtplus, position); 
    if (!positionCount.contains(position)) { 
     positionCount.put(position, 0); 
    } 
} 

その後、あなたのonClickメソッドの内部で、あなたが追加します。

public void onClick(View v) { 
    ... 
    Button button = (Button) v; 
    int position = decrementButtons.get(button); //Change for increment 
    int count = positionCount.get(position); 
    count--; 
    positionCount.put(position, count); 
    ... 
} 
+0

はこれを試してみて、あなたと感謝を教えてくれますこの方法は、私は申し訳ありませんが、それを修正思っ – Omkar

+0

のためならば(!positionCount.contains(位置))には、エラーになります。 'と言うことになっています!positionCount.containsKey(位置)' – Omkar

+0

を見つけていない含まれている時に助け – Steeno