2012-12-04 29 views

回答

1

我從來沒有做過任何這樣的事情,但我認爲你可以從中得到一些邏輯並使之起作用。

第1步:

請對Facebook的API的調用,得到的所有狀態更新,並在for循環,將其添加到ArrayList<String>。例如,Facebook以JSON格式返回其數據。我假設你已經知道如何獲取數據。您需要解析Facebook API調用返回的JSON數據中的「message」標記。

例如:

ArrayList<String> arrStatusMessage; 


for (int i = 0; i < JAFeeds.length(); i++) { 
    JSONObject JOFeeds = JAFeeds.getJSONObject(i); 

    if (JOFeeds.has("message")) { 
     String strStatusMessage = JOFeeds.getString("message"); 
     arrStatusMessage.add(strStatusMessage); 
    } 
} 

第2步:

一旦你有你的整個一套的Facebook狀態消息,你現在需要使用java.util.Random實例。

例如:(請注意:我沒有測試此代碼,它可能會導致錯誤您可能要玩它有點讓它工作:-(。)

private static final Random randomGenerator = new Random(); 


int intRandom = randomGenerator.nextInt(arrStatusMessage.size()); 
String strRandomStatus = arrStatusMessage.get(intRandom); 

步驟3:

使用strRandomStatus到將其放置在TextView

,例如:

TextView txtRanStatus = (TextView) findViewById(R.id.txtRanStatus); 
txtRanStatus.setText(strRandomStatus); 

您還沒有發佈任何代碼,因此很難提供符合您的計劃的東西。但我認爲這應該讓你開始。你可能需要調整一些東西,並將它們放在你自己的代碼中。

希望這會有所幫助。

編輯:按照通過次OP評論,添加一些代碼位獲取的Facebook狀態消息:

啓動新的AsyncTask

onCreate()方法

new getFacebookFeeds().execute(); 

我在我的應用程序中使用此方法使Facebook電話獲得所有供稿 Graph API。

private class getFacebookFeeds extends AsyncTask<Void, Void, Void> { 
    @Override 
    protected Void doInBackground(Void... params) { 
     String URL = "https://graph.facebook.com/me/home&access_token=ACCESS_TOKEN?limit=10"; 
     try { 
      HttpClient hc = new DefaultHttpClient(); 
      HttpGet get = new HttpGet(URL); 
      HttpResponse rp = hc.execute(get); 

      if (rp.getStatusLine().getStatusCode() == HttpStatus.SC_OK) { 
       String result = EntityUtils.toString(rp.getEntity()); 

       // GET THE INTIAL RESULTS JSON ROOT 
       JSONObject JORoot = new JSONObject(result); 

       // GET THE "DATA" TAG FOR FEEDS ROOT 
       JSONArray JAFeeds = JORoot.getJSONArray("data"); 

       for (int i = 0; i < JAFeeds.length(); i++) { 
        JSONObject JOFeeds = JAFeeds.getJSONObject(i); 

        if (JOFeeds.has("message")) { 
         String strStatusMessage = JOFeeds.getString("message"); 
         arrStatusMessage.add(strStatusMessage); 
        } 
       } 
      } 
     } catch (Exception e) { 
      // TODO: handle exception 
     } 
    } 

} 

你可以做其餘的代碼,在那裏你選擇一個隨機的狀態更新,在AsyncTaskonPostExecute()如上圖所示:

@Override 
protected void onPostExecute(Void result) { 
    int intRandom = randomGenerator.nextInt(arrStatusMessage.size()); 
    String strRandomStatus = arrStatusMessage.get(intRandom); 

    txtRanStatus.setText(strRandomStatus); 

} 

聲明TextView作爲全局變量然後將其丟在致電AsyncTask之前,您的onCreate()。我認爲這應該工作得很好。讓我知道事情的後續。 :-)

+0

你能告訴我如何獲取所有狀態?除此之外,你的答案總結了我必須做的一切。謝謝! – defiant

+1

@oDx:給我幾分鐘時間爲你輸入。 –

+0

謝謝隊友! :D – defiant

相關問題