Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/213.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
Java Android,AsyncTask内的AsyncTask doInBackground_Java_Android_Json_Android Asynctask - Fatal编程技术网

Java Android,AsyncTask内的AsyncTask doInBackground

Java Android,AsyncTask内的AsyncTask doInBackground,java,android,json,android-asynctask,Java,Android,Json,Android Asynctask,我不知道如何解决这个问题,这是我在为Android设计API时遇到的。 API必须包含能够从特定URL获取JSON对象的方法。因此,我决定使用AsyncTask方法来实现这一点。 从这个API执行方法之后,我需要填充一个列表视图,但我不知道如何填充。据我所知,无法将AsyncTask(从API中的方法)放入其他AsyncTask。 有什么想法、解决方案、建议吗 编辑: 换句话说,我想创建一个调用restful服务并获取JSON的方法。 将执行此方法(从其他包中)以使用结果填充ListView 我

我不知道如何解决这个问题,这是我在为Android设计API时遇到的。 API必须包含能够从特定URL获取
JSON对象的方法。因此,我决定使用
AsyncTask
方法来实现这一点。 从这个API执行方法之后,我需要填充一个
列表视图
,但我不知道如何填充。据我所知,无法将
AsyncTask
(从API中的方法)放入其他
AsyncTask
。 有什么想法、解决方案、建议吗

编辑: 换句话说,我想创建一个调用restful服务并获取
JSON
的方法。 将执行此方法(从其他包中)以使用结果填充
ListView

我的
异步任务

protected String doInBackground(HashMap<String,Boolean>... args)
    {
        JSONArray readings=null;
        JSONObject json = getReadingsFromDB(args[0]);

        try
        {   
            int i;
            readings = json.getJSONArray(TAG_READINGS);

            for(i =0; i<readings.length();i++)
            {
                JSONObject ob = readings.getJSONObject(i);
                ReadingH newReading = new ReadingH();
                HashMap<String,String> map = new HashMap<String, String>();

                String id;
                String date;
                String humidity;
                String temp;

                if(!ob.isNull(TAG_TEMPERATURE))
                {
                    temp = ob.getString(TAG_TEMPERATURE);
                    newReading.setValue(TAG_TEMPERATURE, temp);
                    map.put(TAG_TEMPERATURE, temp);
                }
                if(!ob.isNull(TAG_ID))
                {
                    id = ob.getString(TAG_ID);
                    newReading.setValue(TAG_ID, id);
                    map.put(TAG_ID, id);
                }
                if(!ob.isNull(TAG_DATE))
                {
                    date = ob.getString(TAG_DATE);
                    map.put(TAG_DATE, date);
                    newReading.setValue(TAG_DATE, date);
                }
                if(!ob.isNull(TAG_HUMIDITY))
                {
                    humidity= ob.getString(TAG_HUMIDITY);
                    map.put(TAG_HUMIDITY, humidity);
                    newReading.setValue(TAG_HUMIDITY, humidity);
                }
                readingsListH.add(newReading);
                readingsList.add(map);
            }
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }
        return null;
    }

    @Override
    protected void onPostExecute(String file_url)
    {
        //  pDialog.dismiss();
        a.runOnUiThread(new Runnable()
        {
            public void run()
            {
                ListAdapter adapter = new SimpleAdapter(
                        a,readingsList,
                        R.layout.reading_item,new String[]{TAG_ID,TAG_DATE,TAG_TEMPERATURE},
                        new int[]{R.id.ReadingID,R.id.ReadingDate,R.id.ReadingTemperature});
                a.setListAdapter(adapter);      
            }
        });
    }
受保护字符串doInBackground(HashMap…args)
{
JSONArray读数=空;
JSONObject json=getReadingsFromDB(args[0]);
尝试
{   
int i;
readings=json.getJSONArray(标记读数);

对于(i=0;iasynctask本身就是一个引用,您可以在任何地方实现它,并在所需的位置(方法)内使用它(启动)你需要阅读一些关于
AsyncTask
的文档,并搜索类似的问题,因为这里有几十个问题的答案。不,你不需要使用第二个AsyncTask。如果你想在不深入Android的情况下构建一个快速restful客户端,你应该使用一个库,比如。我读过类似的问题,但是有一点不同。其他人可以修改onPostExecute()方法,我们可以在其中放置代码来管理ListView-例如,填充它,我不填充。方法getAll()其中aSyncTask包含在我的API中。我是否可以使用方法get from aSyncTask等待结果,然后在RunUnuithRead中使用结果填充ListView?为什么不能使用
onPostExecute
?如果您的
aSyncTask
负责下载和解析JSON数据,您是否考虑过让API的用户继承f从AsyncTask和override
onPostExecute()
?您是否考虑过让API的客户端提供回调的选项,在回调完成后,
onPostExecute()
将调用该回调(该回调将接收从json获取的数据)?