2011-11-19 19 views
1

我試圖製作一個應用程序,它使用JSON解析來自Twitter的數據並獲得實時推送訂閱源,我成功地能夠將數據記錄到logcat中,但不知何故,我無法顯示在ListView中也是如此,最後一條新聞提要顯示在ListView中,但其餘的提要消失了。我將它們加入Arraylist,然後再使用ArrayAdapter這樣做。我的代碼有什麼問題,我是否正確解析了JSONArrayJSONObject,或者是否存在我缺少的任何轉換?無法在Android ListView中顯示推送飼料

public class readingtwitterfeedsActivity extends ListActivity { 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    // setContentView(R.layout.main); 
    String readTwitterFeed = readTwitterFeed(); 
    try { 
     JSONArray jsonArray = new JSONArray(readTwitterFeed); 
     Log.i(readingtwitterfeedsActivity.class.getName(), 
       "Number of entries " + jsonArray.length()); 
     for (int i = 0; i < jsonArray.length(); i++) { 
      JSONObject jsonObject = jsonArray.getJSONObject(i); 
      Log.i(readingtwitterfeedsActivity.class.getName(), jsonObject.getString("text")); 
      List<String> al=new ArrayList<String>(); 
      al.add(jsonArray.getJSONObject(i).getString("text")); 
      ArrayAdapter<String> adapter=new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, al); 
      setListAdapter(adapter); 
     } 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 

    public String readTwitterFeed() { 
    StringBuilder builder = new StringBuilder(); 
    HttpClient client = new DefaultHttpClient(); 
    HttpGet httpGet = new HttpGet(
      "http://twitter.com/statuses/user_timeline/bbcnews.json"); 
    try { 
     HttpResponse response = client.execute(httpGet); 
     StatusLine statusLine = response.getStatusLine(); 
     int statusCode = statusLine.getStatusCode(); 
     if (statusCode == 200) { 
      HttpEntity entity = response.getEntity(); 
      InputStream content = entity.getContent(); 
      BufferedReader reader = new BufferedReader(
        new InputStreamReader(content)); 
      String line; 
      while ((line = reader.readLine()) != null) { 
       builder.append(line); 
      } 
     } else { 
      Log.e(readingtwitterfeedsActivity.class.toString(), "Failed to download file"); 
     } 
    } catch (ClientProtocolException e) { 
     e.printStackTrace(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
    return builder.toString(); 
} 
} 
+0

看看我的答案。 – user370305

回答

2

就初始化前的字符串數組for循環和for循環結束後,設置適配器..

試試這個,替換你的代碼。

List<String> al=new ArrayList<String>(); 
for (int i = 0; i < jsonArray.length(); i++) { 
      JSONObject jsonObject = jsonArray.getJSONObject(i); 
      Log.i(readingtwitterfeedsActivity.class.getName(), jsonObject.getString("text")); 

      al.add(jsonArray.getJSONObject(i).getString("text")); 

     } 
ArrayAdapter<String> adapter=new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, al); 
      setListAdapter(adapter); 
+0

噢,真好!它非常感謝:) –

+0

爲什麼這樣的情況下,如果我們初始化for循環內的arraylist這個東西不起作用? –

+1

接受user370305的答案,如果它的工作請:)) – anticafe