搜索不起作用的Android列表
filterTextwatcher的问题在于:我的应用程序,当数据与名字中的值匹配时显示2条记录,当记录与名字中的值匹配时显示1条记录 示例:当我键入M时,它将显示mary的2条记录,但当我键入k时,它将显示mary kom的1条记录和Karl加上json数据的2条记录,请参见下面的json搜索不起作用的Android列表,android,android-json,android-search,Android,Android Json,Android Search,filterTextwatcher的问题在于:我的应用程序,当数据与名字中的值匹配时显示2条记录,当记录与名字中的值匹配时显示1条记录 示例:当我键入M时,它将显示mary的2条记录,但当我键入k时,它将显示mary kom的1条记录和Karl加上json数据的2条记录,请参见下面的json { "details": [ { "id": "01", "name": "Mary Kom",
{
"details": [
{
"id": "01",
"name": "Mary Kom",
"email": "abc@uvw.in",
"address": "xx-xx-xxxx,x - street, x - country",
"gender" : "male",
"phone": {
"mobile": "+91 0000000000",
"home": "00 000000",
"office": "00 000000"
}
},
{
"id": "02",
"name": "karl plus",
"email": "pqrp@gmail.com",
"address": "xx-xx-xxxx,x - street, x - country",
"gender" : "male",
"phone": {
"mobile": "+91 0000000000",
"home": "00 000000",
"office": "00 000000"
}
}
]}
代码:
我认为这是SimpleAdapter过滤器的默认行为。您想要实现的是,您需要实现自己的自定义过滤器。 请参见此处的示例:- 更改此代码: //过滤类
public void filter(String charText) {
charText = charText.toLowerCase(Locale.getDefault());
worldpopulationlist.clear();
if (charText.length() == 0) {
worldpopulationlist.addAll(arraylist);
}
else
{
for (WorldPopulation wp : arraylist)
{
if (wp.getCountry().toLowerCase(Locale.getDefault()).contains(charText))
{
worldpopulationlist.add(wp);
}
}
}
notifyDataSetChanged();
}
到
它可以帮助您实现功能
那么问题是什么?你们有什么例外吗?很好的第一篇帖子,但正如沙泽布指出的,你们错过了你们的问题所在。请阅读,这将帮助您重新表述您的问题,以便获得可能的答案。@Vinay:我们需要更多细节,如适配器代码。!!因为我认为你需要覆盖适配器的过滤方法,所以。。!!Thanx for reply根本没有bug,即使搜索效果很好,它也可以正常工作,但唯一的问题是,当搜索字母与名字中的值匹配时,它会显示2条记录,而同一个字母只有1条记录。但是当搜索值与姓氏中的值匹配时,显示就完美了
public void filter(String charText) {
charText = charText.toLowerCase(Locale.getDefault());
worldpopulationlist.clear();
if (charText.length() == 0) {
worldpopulationlist.addAll(arraylist);
}
else
{
for (WorldPopulation wp : arraylist)
{
if (wp.getCountry().toLowerCase(Locale.getDefault()).contains(charText))
{
worldpopulationlist.add(wp);
}
}
}
notifyDataSetChanged();
}
public void filter(String charText) {
charText = charText.toLowerCase(Locale.getDefault());
worldpopulationlist.clear();
if (charText.length() == 0) {
worldpopulationlist.addAll(arraylist);
}
else
{
for (WorldPopulation wp : arraylist)
{
if (wp.getCountry().toLowerCase(Locale.getDefault()).startsWith(charText))
{
worldpopulationlist.add(wp);
}
}
}
notifyDataSetChanged();
}