2012-03-23 57 views
0

嗨我一直得到这个错误,我试图从Twitter通过JSON鸣叫,似乎无法摆脱这个“ARR”。我需要做一个不同的循环?我确实尝试过,但它一直返回相同的错误。只能遍历一个数组或java.lang.Iterable的实例

public ArrayList<Tweet> getTweets(String searchTerm, int page) { 
     String searchUrl = 
      "http://search.twitter.com/[email protected]" 
      + searchTerm + "&rpp=100&page=" + page; 

     ArrayList<Tweet> tweets = 
      new ArrayList<Tweet>(); 

     HttpClient client = new DefaultHttpClient(); 
     HttpGet get = new HttpGet(searchUrl); 

     ResponseHandler<String> responseHandler = 
      new BasicResponseHandler(); 

     String responseBody = null; 
     try { 
     responseBody = client.execute(get, responseHandler); 
     } catch(Exception ex) { 
     ex.printStackTrace(); 
     } 

     JSONObject jsonObject = null; 
     JSONParser parser = new JSONParser(); 

     try { 
     Object obj = parser.parse(responseBody); 
     jsonObject=(JSONObject)obj; 
     }catch(Exception ex){ 
     Log.v("TEST","Exception: " + ex.getMessage()); 
     } 

     JSONArray<Object> arr = null; 

     try { 
     Object j = jsonObject.get("results"); 
     arr = (JSONArray)j; 
     } catch(Exception ex){ 
     Log.v("TEST","Exception: " + ex.getMessage()); 
     } 

     for(Object t : arr) { 
     Tweet tweet = new Tweet(
      ((JSONObject)t).get("from_user").toString(), 
      ((JSONObject)t).get("text").toString(), 
      ((JSONObject)t).get("profile_image_url").toString() 
     ); 
     tweets.add(tweet); 
     } 

     return tweets; 
    } 

请帮忙!!

+0

HAVA这里看看吧! [迭代json数组](http://stackoverflow.com/questions/3408985/json-array-iteration-in-android-java) – Vossi 2012-03-23 13:33:27

回答

4

作为例外说,你只能用迭代上的java.lang.Iterable实例每个循环。 JSONArray不是其中之一。

使用 “经典” 的循环:

for(int i = 0; i < arr.length(); i++) { 
    JSONObject t = (JSONObject) arr.get(i); 
    Tweet tweet = new Tweet(
    t.get("from_user").toString(), 
    t.get("text").toString(), 
    t.get("profile_image_url").toString() 
    ); 
    tweets.add(tweet); 
} 
+0

谢谢这帮助我编译的代码,但即时在这两条线上运行时错误:\t \t \t tweets = getTweets(“android”,1); &\t \t for(int i = 0; i BoneStarr 2012-03-23 16:06:01

+0

Yeah no worryries,will do ... – BoneStarr 2012-03-23 16:23:41

1

JSONArray不执行Iterable。使用lengthget内它访问成员(见here

int count = arr.length(); 
for (int i=0;i<count;++i) { 
    string s = arr.getString(i); 
}