Java 带有onClick的Listview搜索显示错误结果
我不知道我是不是在放屁,但我被难住了。我有一个列表视图,由一个包含搜索功能的字符串数组填充。当用户单击listView项目时,将显示一个对话框,其中包含与该项目相关的信息。在我搜索之前,一切都是有效的,搜索本身也是有效的,并带来正确的结果。Onclick开关盒无需搜索即可工作。问题是,当输入搜索时,搜索的内容现在假定为数组中的数字0,并显示[0]数组项的信息,而搜索的项位于列表的较低位置。假设我有一个字符串为a,b,c的数组。默认情况下,onClick对话框可以工作,但是当我搜索“b”并单击它时,它会显示“a”的信息,因为b现在位于列表的顶部,“a”已经消失Java 带有onClick的Listview搜索显示错误结果,java,android,arrays,listview,Java,Android,Arrays,Listview,我不知道我是不是在放屁,但我被难住了。我有一个列表视图,由一个包含搜索功能的字符串数组填充。当用户单击listView项目时,将显示一个对话框,其中包含与该项目相关的信息。在我搜索之前,一切都是有效的,搜索本身也是有效的,并带来正确的结果。Onclick开关盒无需搜索即可工作。问题是,当输入搜索时,搜索的内容现在假定为数组中的数字0,并显示[0]数组项的信息,而搜索的项位于列表的较低位置。假设我有一个字符串为a,b,c的数组。默认情况下,onClick对话框可以工作,但是当我搜索“b”并单击它时
<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(位置)
您需要从过滤后的数据而不是原始数据中获取项目详细信息。postshowDialog
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
}