搜索json内容的功能

时间:2014-10-07 10:55:32

标签: android json search

我开发了一个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,
     }
   ]

2 个答案:

答案 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

的布局layout_search

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 
            }
        });