我正在使用facebook4j和java,并且我会在Facebook的公开个人资料中发表所有评论。我设法阅读每篇文章的前25条评论,但不是其他所有内容。我知道有一种寻呼逻辑,但我无法设法在页面之间传递。我从帖子中获取评论的代码是:
ResponseList<Post> feeds = facebook.getFeed(p.getRiferimento());
Post post = feeds.get(0);
PagableList<Comment> commenti = post.getComments();
commenti.size(); // return me always 25
我试图循环纪念,但我只到达第一个元素;我也尝试将PagableList转换为数组,但它只有25个元素。如果我从纪念中采取Paging或Cursor并且我循环它们,它们会循环;最后如果我写了getCount(),它总是返回null。
有人可以帮助我吗?
答案 0 :(得分:3)
不确定回答问题是否为时已晚。
是的,你需要使用Paging来获取下一页的项目,使用fetchNext()来获取页面中的项目。如果到达页面末尾,它将返回null。以下是示例:
public List<Comment> getComments(Post post) {
List<Comment> fullComments = new ArrayList<>();
try {
// get first few comments using getComments from post
PagableList<Comment> comments = post.getComments();
Paging<Comment> paging;
do {
for (Comment comment: comments)
fullComments.add(comment);
// get next page
// NOTE: somehow few comments will not be included.
// however, this won't affect much on our research
paging = comments.getPaging();
} while ((paging != null) &&
((comments = fb_.fetchNext(paging)) != null));
} catch (FacebookException ex) {
Logger.getLogger(Facebook.class.getName())
.log(Level.SEVERE, null, ex);
}
return fullComments;
}
但是(我在评论中添加了一个注释),很少有评论会丢失。我还不确定原因。由于这个数字很小而且不会影响我的研究,我只想留下它。