我正在尝试从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,但我知道有更多的状态,而不是我的墙上的状态。
有人可以帮助我吗?
答案 0 :(得分:0)
似乎你的问题是关于分页。 3.0 SDK有一个非常好的使用分页的方法,但它对列表中的无限滚动更有用。
如果你致电response.getRequestForPagedResults(direction)
,它会给你一个新的请求对象,你可以调用它来获取下一页。对于您的应用程序,您必须确保执行多个请求,但它可以一个接一个地关闭它们。一旦下一页请求为空,您就到了最后。