如何在Android中获取过滤ListView的点击项索引?
我的问题是问题的延伸部分 当过滤如何在Android中获取过滤ListView的点击项索引?,android,listview,Android,Listview,我的问题是问题的延伸部分 当过滤ListView时,我需要从ListView中单击的listitem中获取特定模型 这是我的数据模型 public class ProductListModel{ @Override public String toString() { return ProductName; } public ProductListModel(int ProductId, String ProductName) {
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);
但是,当我过滤适配器以仅显示过滤后的数据时,onItemClick()
会给出一些未单击的其他值
我认为发生这种情况是因为当我们过滤数据时,项目的行位置发生了变化,因此它不提供原始位置来获取单击的产品的productid
在我们过滤列表视图之后,有人能帮我获取productid吗?我有一个棘手的方法。。
将原始列表作为全局变量保留在主类中。
列表或列表;
您可以在adapter类的getView()
中的视图中标记项名称。
在lv.setOnItemClickListener(新的OnItemClickListener(){
@覆盖
公共单击(适配器视图arg0,视图arg1,内部位置,
长id){
字符串名称=agr1.getTag().tostring();
//orgList从name变量中列出原始项目位置并使用它
orgList.indexOf(名称)将执行此操作。
}
});`
希望这能解决你的问题。我不知道还有其他更好的方法。使用Adapter.getItem()方法谢谢@pskink。从未想过从适配器本身获取数据。我如何接受这个答案???这是获取适配器项的唯一方法,永远不要使用任何其他解决方法来快速回复Jithu。我还没有尝试你的方法,因为Adapter.getItem()方法暂时解决了我的问题。但是一旦我完成了这个项目,我一定会试试这个。。我知道getItem()会解决您的问题。但我以前总是将getItem()保持为空。。这就是我这样想的原因。getItem()是正确的方法。没有必要尝试这个。
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();
}
});
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int position,
long id) {
String name = agr1.getTag().tostring();
//orgList original item position from name variable and use it
orgList.indexOf(name) will do that.
}
});`