2016-03-31 61 views
0

創建的每個物品都是具有名稱,價格和數量的產品類型的物品。碰巧,當我試圖在gridview中接收每個項目的位置時,我總是得到視圖的第一個項目。在發佈我的問題之前,我觀看了其他幾篇文章,看起來我正在爲了如何使用這些標籤而做的一切正確。我總是收到相同的物品

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
ViewHolder holder = null; 
    if (convertView == null || (convertView.getTag() == null)) { 
     convertView = inflater.inflate(R.layout.listview_values, parent, false); 
     holder = new ViewHolder(); 
     holder.productName = (TextView) convertView.findViewById(R.id.textViewList1); 
     holder.productQuantity = (EditText) convertView.findViewById(R.id.EditTextList2); 
     holder.productPrice = (TextView) convertView.findViewById(R.id.textViewList3); 
     holder.removeProduct = (ImageButton) convertView.findViewById(R.id.removeProduct); 
    } 
    else { 
     holder = (ViewHolder) convertView.getTag(); 
    } 
    convertView.setTag(holder); 
    holder.productName.setText(products.get(position).getProductName()); 
    holder.productQuantity.setText(String.valueOf(products.get(position).getProductQuantity()) + " Un."); 
    holder.productPrice.setText(String.valueOf(products.get(position).getProductPrice())+ " €"); 
    holder.removeProduct.setTag(new Integer(position)); 

    return convertView; 
} 

public void removeProduct(View v) { 

    ImageButton removeProduct = (ImageButton) findViewById(R.id.removeProduct); 
    Integer position = (Integer) removeProduct.getTag(); 

    Product p1 = (Product) adapter.getItem(position); 

    Toast toast = Toast.makeText(this,"You want to remove the item: "+ position +" with the product name: "+ p1.getProductName() + " , quantity: "+ p1.getProductQuantity() 
      + " , price: " + p1.getProductPrice(),Toast.LENGTH_LONG); toast.show(); 
} 

當我現在運行模擬器不管什麼項目我點擊我總是得到這樣的結果:

enter image description here

如果您需要看到更多的代碼只是告訴我,我會發布它。提前謝謝你們。

+1

您可以試試這個:Integer position =(Integer)v.getTag(); – ARP

+0

它的工作原理,但我不明白,你能解釋一下嗎? ...順便說一句,謝謝 – pMpC

+1

當你做findViewById時,你總是從同一個對象那裏得到標籤,這是因爲你必須從參數「v」獲得標籤 – ARP

回答

1

更改removeProduct()到 -

public void removeProduct(View v) {  
    Integer position = (Integer) v.getTag(); 

    Product p1 = (Product) adapter.getItem(position); 

    Toast toast = Toast.makeText(this,"You want to remove the item: "+ position +" with the product name: "+ p1.getProductName() + " , quantity: "+ p1.getProductQuantity() 
      + " , price: " + p1.getProductPrice(),Toast.LENGTH_LONG); toast.show(); 
} 

的原因是因爲你再次

ImageButton removeProduct = (ImageButton) findViewById(R.id.removeProduct) 

初始化你的觀點,這已不再是你點擊了相同的觀點。 您點擊的視圖是傳遞的參數removeProduct()

+0

爲什麼它不能以我的方式工作?謝謝 – pMpC

+0

編輯我的答案。 –

+0

那麼爲什麼我收到的removeProduct標記而不是convertView對象? – pMpC

相關問題