1

Android SDK からユーザーのステータスにアクセスしようとしています。ページネーションを使用しましたが、アプリを実行しているときに、特定の日付までしか結果が得られません。また、ステータスを取得するためにタイムスタンプを設定しようとしましたが、役に立ちませんでした。

私が使用しているコードは以下のものです。

public void downloadStatuses(final int _since){
    Session session = Session.getActiveSession();
    if( session != null ){

        Bundle params = new Bundle();
        //params.putInt("since", _since);
        //params.putInt("limit", 1000);
        params.putString("fields","from,id,message,updated_time,place");

        Request request = new Request(
                session,
                Facebook.STATUS_PATH,
                params,
                HttpMethod.GET,
                new Request.Callback() {                        
                    public void onCompleted(Response response) {
                        parseStatuses(response);
                        iterateStatuses(response);
                    }
                }
        );

        Request.executeBatchAsync(request);



    }
}

public void parseStatuses(Response _response){
    if( _response.getGraphObject() != null ) {
        try {

            JSONArray data = _response.getGraphObject()
                    .getInnerJSONObject()
                    .getJSONArray("data");


            int len = data.length();
            for(int i=0 ; i < len ; i++){                                       
                StatusWrapper status = new StatusWrapper(data.getJSONObject(i));
                Log.v("Status", status.updatedTime);

            }
        } catch (JSONException e) {
            Log.v("JSONException ", e.toString());
        }
    }
}

public void iterateStatuses(Response _response){        
    Request next = _response.getRequestForPagedResults(Response.PagingDirection.NEXT);
    if(next != null){
        next.setCallback(
                new Request.Callback() {
                    public void onCompleted(Response response) {
                        parseStatuses(response);
                        iterateStatuses(response);
                    }
                });

        Request.executeBatchAsync(next);
    }

}

コードは次のように機能します (?)。最初に、最初の 25 項目を取得するための新しいリクエストを作成し、downloadStatuses() からリクエストを発行します。この関数が完了すると、facebook への非同期呼び出しになります。まず、parseStatuses でステータスを解析してジョブを完了し、iterateStatuses を使用して結果の次のページに移動しようとします。

IterateStatuses は requestForPagingResults を取得し、次の結果セットの取得を試みます。iterateStatuses を 4 回呼び出した後、requestForPagingResults は null を返しますが、壁にはそれよりも多くのステータスがあることがわかっています。

誰でも私を助けることができますか?

4

1 に答える 1

0

あなたの質問はページネーションについてのようです。3.0 SDK には、ページネーションを使用する非常に優れた方法がありますが、リスト内のエンドレス スクロールにはより便利です。

を呼び出すとresponse.getRequestForPagedResults(direction)、次のページを取得するために呼び出すことができる新しい要求オブジェクトが提供されます。アプリケーションの場合、確かに複数のリクエストを実行する必要がありますが、それらを次々に起動できます。次のページ リクエストが null になると、最後に到達したことになります。

于 2013-05-23T16:08:05.490 に答える