我的問題是this問題的擴展部分。如何獲取Android中過濾ListView的點擊項的索引?
當ListView
被過濾時,我需要從ListView
中點擊的listitem中獲取特定的模型。
這是我的數據模型。
public class ProductListModel{
@Override
public String toString() {
return ProductName;
}
public ProductListModel(int ProductId, String ProductName) {
ProductId = ProductId;
ProductName = ProductName;
}
public int getProductId() {
return ProductId;
}
public void setProductId(int ProductId) {
ProductId = ProductId;
}
public String getProductName() {
return ProductName;
}
public void setProductName(String ProductName) {
ProductName = ProductName;
}
int ProductId;
String ProductName;
}
我從數據庫中獲取的數組。
ProductListModel[] slm=new ProductListModel[count];
我有一個ArrayAdapter
這樣
ArrayAdapter<ProductListModel> ad=new ArrayAdapter<ProductListModel>(this, android.R.layout.simple_list_item_1, android.R.id.text1, slm);
和我ItemClickListener
也工作正常,並給予我的一切,必須提供。
lv.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int position,
long id) {
Toast.makeText(getApplicationContext(),slm[position].ProductName, Toast.LENGTH_LONG).show();
}
});
,但是當我過濾適配器顯示過濾的數據而已,onItemClick()
是給未點擊一些其他值。
我想這是發生的,因爲當我們過濾數據時,項目的行位置正在改變,因此它沒有提供原始位置來獲得點擊產品的產品。
我們過濾ListView
後,任何人都可以幫助我獲得productid嗎?
use Adapter.getItem()method – pskink
Thanks @pskink。從來沒有想過從適配器本身獲取數據。我如何接受這個答案? –
這是獲取適配器項目的唯一方式,絕不使用任何其他解決方法 – pskink