2013-01-12 131 views
-1

我问过一个问题,前面提到了我有关在ListView中显示JSON数据的错误。我被指向AsyncTask,这让我非常困惑。我想要解析JSON数据并将其设置为AsyncTask中的String []数组。顺便说一下,我阅读了文档。我需要如何做到这一点的帮助。这是我的错误代码:Android - AsyncTask返回字符串数组

class ShowTitlesTask extends AsyncTask<String[], Integer, String[]> { 

    @Override 
    protected String[] doInBackground(String[]... params) { 
      URL jsonURL = new URL("http://gdata.youtube.com/feeds/api/users/illbehonest/uploads?v=2&alt=jsonc"); 
      URLConnection jc = jsonURL.openConnection(); 
      InputStream is = jc.getInputStream(); 
      String jsonTxt = IOUtils.toString(is); 

      JSONObject json = (JSONObject) JSONSerializer.toJSON(jsonTxt); 

      JSONObject jdata = json.getJSONObject("data"); 

      JSONArray jentry = jdata.getJSONArray("items"); 
      for (int entryNumber = 0; entryNumber<=25; entryNumber++){ 
        JSONObject entry = jentry.getJSONObject(entryNumber); 
        String[][] jtitle = {entry.getString("title")}; 
        params = jtitle; 
      } 
      return null; 
    } 

} 
+0

问题是什么? –

回答

2

试试这个:

@Override 
    protected String[] doInBackground(String[]... params) { 
      List<String> result = new ArrayList<String>();     
      URL jsonURL = new URL("http://gdata.youtube.com/feeds/api/users/illbehonest/uploads?v=2&alt=jsonc"); 
      URLConnection jc = jsonURL.openConnection(); 
      InputStream is = jc.getInputStream(); 
      String jsonTxt = IOUtils.toString(is); 

      JSONObject json = (JSONObject) JSONSerializer.toJSON(jsonTxt); 

      JSONObject jdata = json.getJSONObject("data"); 

      JSONArray jentry = jdata.getJSONArray("items"); 
      for (int entryNumber = 0; entryNumber<=jentry.lenght(); entryNumber++){ 
        JSONObject entry = jentry.getJSONObject(entryNumber); 
        result.add(entry.getString("title"); 
      } 

      return result.toArray(new String[result.size()]); 
    } 

顺便说一句,一些在doInBackground抛出不同的异常使用你,所以你必须通过一个围绕它们的方法try/catch区块。

0

我不知道这是你唯一的问题,但在方法的头部,你表明,该方法返回

String[]

但实际上你返回null