Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/199.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android-避免在不必要时加载大量json数据_Android_Json_Listview - Fatal编程技术网

Android-避免在不必要时加载大量json数据

Android-避免在不必要时加载大量json数据,android,json,listview,Android,Json,Listview,我有一个简单的listview,它从一个非常巨大的JSON加载数据 目前,我已经完成了下面的示例——因此我从JSON中提取所有数据。这只是一个例子,我有更多的数据要分配给actorList: protected Boolean doInBackground(String... args) { HttpHandler sh = new HttpHandler(); String url = "androidnews.json"; String js

我有一个简单的listview,它从一个非常巨大的JSON加载数据

目前,我已经完成了下面的示例——因此我从JSON中提取所有数据。这只是一个例子,我有更多的数据要分配给actorList:

 protected Boolean doInBackground(String... args) {
        HttpHandler sh = new HttpHandler();
        String url = "androidnews.json";
        String jsonStr = sh.makeServiceCall(url);

        if (jsonStr != null) {
            try {JSONObject jsonObj = new JSONObject(jsonStr);
                JSONArray actors = jsonObj.getJSONArray("result");

                for (int i = 0; i < actors.length(); i++) {
                    JSONObject c = actors.getJSONObject(i);

                    Actors actor = new Actors();

                    actor.setNazov(c.getString("name"));
                    actor.setPerex(c.getString("desc"));
                    actor.setPlace(c.getString("place"));
                    actor.setGps1(c.getString("gps1"));
                    actor.setGps2(c.getString("gps2"));
                    actor.setContact(c.getString("contact"));
                    actor.setinfo(c.getString("info"));

                    //and much more data from JSON

               actorsList.add(actor);

                }
受保护的布尔doInBackground(字符串…args){
HttpHandler sh=新的HttpHandler();
字符串url=“androidnews.json”;
字符串jsonStr=sh.makeServiceCall(url);
if(jsonStr!=null){
try{JSONObject JSONObject=newjsonobject(jsonStr);
JSONArray actors=jsonObj.getJSONArray(“结果”);
对于(int i=0;i
然而,它工作得很好,但我认为它毫无理由地加载了所有数据

因为在listview中,我将只使用标题和描述,所有其他数据将只传递给每个项目的onclick活动

因此,我认为我将只向onclick活动传递项的名称,在另一个活动中,我将调用一个PHP文件,该文件将根据此名称作为参数生成包含所有其他数据的JSON,这些数据将仅在另一个活动中使用

我这样做是不是更好

当我只使用其中的一些数据时,我真的不认为加载所有不必要的数据是有用的


所以-实际上将有2个JSON,一个较小的用于listview,另一个用于详细信息,但第二个JSON将仅在用户单击listview中的某个项目时调用,所以不是每次都使用listview。

您可以在服务器上操作吗?是的,PHP将在我的服务器上,因此我可以在那里处理传递的参数并生成JSON。是的,最好的方法是只发送第一次调用所需的数据,然后当用户单击某个特定项目时,您可以向服务器请求更新的数据