我的问题是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