2013-01-12 94 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