2012-03-23 324 views
0

こんにちは私はこのエラーが発生している、私は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

答えて

4

hereを参照)、その中のメンバーにアクセスするlengthgetを使用してください。 JSONArrayはその1つではありません。

は、forループ "クラシック" を使用します。

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

これは私がコードをコンパイルするのに役立ちましたが、今はこれら2つの行でランタイムエラーが発生しています:\t \t \tつぶやき= getTweets( "android"、1); &\t \t for(int i = 0; i BoneStarr

+0

悩みはありません... – BoneStarr

1

JSONArrayは、Iterableを実装していません。例外が言うように、あなただけのjava.lang.Iterableのインスタンス上のループごとに繰り返すことができ

int count = arr.length(); 
for (int i=0;i<count;++i) { 
    string s = arr.getString(i); 
} 
関連する問題