如何在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.
    }
});`