創建的每個物品都是具有名稱,價格和數量的產品類型的物品。碰巧,當我試圖在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();
}
當我現在運行模擬器不管什麼項目我點擊我總是得到這樣的結果:
如果您需要看到更多的代碼只是告訴我,我會發布它。提前謝謝你們。
您可以試試這個:Integer position =(Integer)v.getTag(); – ARP
它的工作原理,但我不明白,你能解釋一下嗎? ...順便說一句,謝謝 – pMpC
當你做findViewById時,你總是從同一個對象那裏得到標籤,這是因爲你必須從參數「v」獲得標籤 – ARP