有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Android,AsyncTask内的AsyncTask doInBackground

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

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

我的AsyncTask

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将出现在我的新方法中,但onPostExecute中的代码将出现在执行新方法的地方

问候


共 (0) 个答案