1. 首先,创建一个Object User 例如:
public class User{
String name;
String title;
String UrlImage;
// setter
// getter
}
2.然后创建一个ListAdapter extends BaseAdapter来填充ListView中的数据
(看AndroidHive的这个教程)
另请参阅 TutoZone.info 中的 this tutoriel(法语),了解如何在自定义适配器中填充数据
3. 对于搜索功能,创建一个布局 layout_search 包含 EditText searchEditText
4. 将此布局包含在每个包含您的数据(来自 Json)的 listView 的布局中
5. 在您的 asynckTask 中,将每个 JsonObject 添加到 A ArrayList<User> ,在解析结束时,您将有一个 arrayList 包含所有数据 [User(name, title,url)] 并填充到您的 listView
6. BVack 到搜索功能,在每个活动上添加一个监听器到 editText:addTextChangedListener:
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
}
});
7. 添加搜索方法,返回一个包含我们搜索的所有数据的列表(从用户在 EditText 中输入的文本开始):
public ArrayList<User>search(String s)
{
ArrayList<User> list= new ArrayList<User>();
for (User u: listeUsers) { // listUsers= contains all data parsed in asynckTask
if(User.getTitle().toLowerCase().startsWith(s))
{
list.add(u);
}
}
return list;
}