我有一个ListView,它具有使用数组适配器的自动完成功能,完全没问题。我的问题是,当我在listview过滤后点击列表项时,我得到第一项的位置索引0,第二项的位置索引,以及过滤列表中的项目等等(在onlistitemclick监听器中获得的位置)
如何在过滤前获取所选项目相对于列表的位置索引?
答案 0 :(得分:2)
如果您发布代码(至少是设置适配器的代码段)会更好。我假设您使用了类似下面的内容。
String[] items={"Item 1", "Item 2", "Item 3"};
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState)
setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,items));
}
如果是这种情况,可能无法设置标签和识别位置。如果你可以直接进行字符串验证,而不是找到合适的位置。但是你说你有超过100件物品。
因此,最好创建一个扩展ArrayAdapter或其他一些的自定义适配器。在该CustomAdapter中,在 getView(int position,View convertView,ViewGroup parent)方法中,您可以通过textView.setText(String[position]);
将每个项目设置为TextView,并在每个视图的设置标记之后(textView) textView.setTag(position);
最后,您在活动类中设置了listView.setAdapter(customAdapter);
的自定义适配器,这样您就可以getTag()
找到即使在过滤项目后也不会更改的位置。让我们看看你是否可以在你发布代码之后编辑我的答案,以防你不想再提出我现在的建议。
答案 1 :(得分:0)
在为视图充气时,为视图设置一个标记,其中包含项目在列表中位于过滤前的位置。
示例
view.setTag(originalPosition);
view.setTag(resource_id, originalPosition);
通过相对位置访问视图时,使用view.getTag()
检索绝对位置