我开发了一个Android应用程序,其中所有内容都是从json获取的,这是使用asynctask完成并填充在listviews中。我在应用程序中有近10个自定义列表视图。现在我想在主页中实现单个搜索。我是android的新手。请建议我,如何实现它。仅对json对象中的标题节点进行搜索。我知道如何设置搜索小部件,listview xml,添加清单文件元数据以及搜索活动到主活动。我想知道,如何实现所有自定义列表视图的单一搜索。
我的json文件如下所示。自定义列表视图包含图像,标题和说明。
[
{
"name":"Steve",
"title":"How things work",
"image":url,
},
{
"name":"Jack",
"date":"helium extraction",
"image":url,
}
]
答案 0 :(得分:0)
你可以做一件事来快速搜索,在arrayList中保存所需的数据,只需用" .contains"
进行for循环运行JSONObject jsonObjRecv = HttpClientJSON.SendHttpPost(Appconstants.BASE_URL + Appconstants.DATA, jobjsend);
在使用后,您将在jsonObjRecv中获得json响应:
title = jsonObjRecv.getString("title");
现在
if(title.contains(//your search string)){//conditions and code }
答案 1 :(得分:0)
1。首先,创建一个对象User
,例如:
public class User{
String name;
String title;
String UrlImage;
// setter
// getter
}
2. 然后创建ListAdapter extends BaseAdapter
以在ListView中填充数据
(从AndroidHive查看此tutoruel)
另请参阅this tutoriel中的TutoZone.info(法语),了解如何在custiom适配器中填充数据
3。对于搜索功能,请创建包含EditText
searchEditText
4. 在每个包含listView的布局中包含此布局(来自Json)
5. 在您的asynckTask中,将每个JsonObject
添加到A ArrayList<User>
,在解析结束时,您将拥有一个包含所有数据{{1}的arrayList并填充在listView
6。 BVack到搜索功能,在每个活动上添加一个侦听器到editText:addTextChangedListener:
[User(name, title,url)]
7. 添加返回列表的搜索方法包含我们搜索的所有数据(以用户在EditText中输入的文字开头):
EditText fillSearch=(EditText)findViewById(R.id.searchEditText);
fillSearch.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {
// TODO Auto-generated method stub
}
@Override
public void beforeTextChanged(CharSequence arg0, int arg1, int arg2,
int arg3) {
// TODO Auto-generated method stub
}
@Override
public void afterTextChanged(Editable arg0) {
// TODO Auto-generated method stub
// TODO Auto-generated method stub
String text = fillSearch.getText().toString().toLowerCase(Locale.getDefault());
ArrayList<User> list = search(text); // our function
}
});