搜索json内容的功能

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了搜索json内容的功能相关的知识,希望对你有一定的参考价值。

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

1.首先,创建一个Object User例如:

public class User{
  String name;
  String title;
  String UrlImage;

  // setter
  // getter

}

2.然后创建一个ListAdapter extends BaseAdapter来填充ListView中的数据

(从AndroidHive看这个tutoruel)

另请参阅this tutorielTutoZone.info(法语),了解如何在custiom适配器中填充数据

3.对于搜索功能,创建一个包含EditText searchEditText的布局layout_search

4.在包含带有数据的listView的每个布局中包含此布局(来自Json)

5.在你的asynckTask中,将每个JsonObject添加到A ArrayList<User>,在解析结束时,你将拥有一个包含所有数据[User(name, title,url)]并填充在listView中的arrayList

6.回到搜索功能,在每个活动上为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;
}
另一答案

你可以做一件事来快速搜索,在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 }

以上是关于搜索json内容的功能的主要内容,如果未能解决你的问题,请参考以下文章

片段中的 JSON 解析 [关闭]

片段的条件自定义 OnBackPress

在片段中实现对话框时,必须在添加内容之前请求窗口功能

前端开发工具vscode如何快速生成代码片段

Android - 将搜索传递给片段

python python中的漂亮(或漂亮打印)JSON对象具有这一功能。在尝试了解什么时,我总是使用这个片段