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 调用之后 requestForPagingResults 返回 null 但我知道状态比我墙上的状态多。

有人可以帮我吗?

4

1 回答 1

0

看来您的问题是关于分页的。3.0 SDK 有一个非常好的使用分页的方法,但它对于列表中的无限滚动更有用。

如果你调用response.getRequestForPagedResults(direction),它会给你一个新的请求对象,你可以调用它来获取下一页。对于您的应用程序,您肯定必须执行多个请求,但它可以一个接一个地触发它们。一旦下一页请求为空,您就到达了终点。

于 2013-05-23T16:08:05.490 回答