Java 带有onClick的Listview搜索显示错误结果

Java 带有onClick的Listview搜索显示错误结果,java,android,arrays,listview,Java,Android,Arrays,Listview,我不知道我是不是在放屁,但我被难住了。我有一个列表视图,由一个包含搜索功能的字符串数组填充。当用户单击listView项目时,将显示一个对话框,其中包含与该项目相关的信息。在我搜索之前,一切都是有效的,搜索本身也是有效的,并带来正确的结果。Onclick开关盒无需搜索即可工作。问题是,当输入搜索时,搜索的内容现在假定为数组中的数字0,并显示[0]数组项的信息,而搜索的项位于列表的较低位置。假设我有一个字符串为a,b,c的数组。默认情况下,onClick对话框可以工作,但是当我搜索“b”并单击它时

我不知道我是不是在放屁,但我被难住了。我有一个列表视图,由一个包含搜索功能的字符串数组填充。当用户单击listView项目时,将显示一个对话框,其中包含与该项目相关的信息。在我搜索之前,一切都是有效的,搜索本身也是有效的,并带来正确的结果。Onclick开关盒无需搜索即可工作。问题是,当输入搜索时,搜索的内容现在假定为数组中的数字0,并显示[0]数组项的信息,而搜索的项位于列表的较低位置。假设我有一个字符串为a,b,c的数组。默认情况下,onClick对话框可以工作,但是当我搜索“b”并单击它时,它会显示“a”的信息,因为b现在位于列表的顶部,“a”已经消失

<string-array name="letters">
    <item>A</item>
    <item>B</item>
    <item>C</item>
</string-array>
还有onClick

list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view,
                int position, long id) {
            switch (position) {
            case 0:
                showDialog();
                //do stuff
                break;
            case 1:
                showDialog();
                //do stuff
                break;
            case 2:
                showDialog();
                //do stuff
                break;
}
        }
    });
list.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父级、视图、,
内部位置,长id){
开关(位置){
案例0:
showDialog();
//做事
打破
案例1:
showDialog();
//做事
打破
案例2:
showDialog();
//做事
打破
}
}
});
我假设它都在switch语句中,并且不使用position变量,但是我不知道还有什么不能使用,因为我不知道;我不认为可以为字符串数组中的项分配id。如果有任何帮助,请给我指出正确的方向

编辑:多亏了JARP,我的代码才得以运行。我拨动开关,使用了if语句

String a = parent.getAdapter().getItem(position).toString(); <-JARP'S idea
if (a.equals("Some string")){
   //Do This
}else if(a.equals("Another string")){
   //Do This
}

String a=parent.getAdapter().getItem(position.toString() 您可以使用adapter.getItem(位置)


您需要从过滤后的数据而不是原始数据中获取项目详细信息。post
showDialog
code。如果我在搜索中键入“b”,这将不起作用。结果仍将给出位置“0”,其中“b”与位置“a”不匹配;Nvm,我想你的答案错了。你的回答确实让我走上了正确的道路,让代码正常工作。
list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view,
                int position, long id) {
            switch (position) {
            case 0:
                showDialog();
                //do stuff
                break;
            case 1:
                showDialog();
                //do stuff
                break;
            case 2:
                showDialog();
                //do stuff
                break;
}
        }
    });
String a = parent.getAdapter().getItem(position).toString(); <-JARP'S idea
if (a.equals("Some string")){
   //Do This
}else if(a.equals("Another string")){
   //Do This
}