2012-12-04 2 views

답변

1

나는 그런 종류의 것을 한 번도하지 못했지만, 당신은 이걸로 약간의 논리를 만들어 낼 수 있다고 생각합니다.

1 단계 :

는, 페이스 북의 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 단계 :

당신이 페이스 북 상태 메시지의 전체 세트가 있으면, 당신은 지금 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); 

코드를 게시하지 않았으므로 자신의 계획에 맞는 것을 제공하기가 어렵습니다. 그러나 나는 이것이 당신을 시작해야한다고 생각합니다. 가능하면 몇 가지 사항을 적용하고 자신의 코드에 맞춰야 할 것입니다.

희망이 도움이됩니다.

편집 :

시작 새로운 AsyncTask를 : 당신의 onCreate() 방법

: 코드의 일부 비트를 추가하는 것은 페이스 북 상태 메시지를 가져, 일 OP에 의해 코멘트 당으로

new getFacebookFeeds().execute(); 

내 앱에서이 방법을 사용하여 Facebook 전화를 걸 수 있습니다. 피드 그래프 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를 선언하고 캐스팅을 onCreate()에 전화를 걸어 AsyncTask으로 전화하십시오. 나는 이것이 잘 작동해야한다고 생각합니다. 어떻게 진행되는지 알려주세요. :-)

+0

모든 상태를 가져 오는 방법을 알려주시겠습니까? 그 이외에 당신의 대답은 내가해야 할 모든 것을 요약합니다. 고맙습니다! – defiant

+1

@oDx : 몇 분만 입력하면됩니다. –

+0

감사합니다. : D – defiant

관련 문제