我有一个RecyclerView,每次在firebase数据库中更改某些内容时都会更新。在我的数据库中,我有“帖子”节点和里面的一些孩子,如“喜欢”,“评论”等。
我的loadRecyclerView函数:
private void loadRecyclerViewData() {
databaseReference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if (posts.size() > 0) {
posts.clear();
}
for (DataSnapshot ds : dataSnapshot.getChildren()) {
Post post = ds.getValue(Post.class);
//Getting a specific user's information (nickname purposes)
posts.add(0, post);
}
adapter.notifyDataSetChanged();
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
我的代码工作正常,并且Firebase中的每次更改都会更新一切,但我希望将监听器保留在除了新帖子之外的所有内容上(我向上滚动以刷新)。有任何想法吗 ??
在此之前只获得帖子将需要一个在最新帖子结束的听众。所以像
databaseReference.orderByKey().endAt("key of newest post").addValueEventListener(...
要确定最新帖子的关键字,您可以为最新值附加一个监听器:
databaseReference.orderByKey().limitToLast(1).addValueEventListener(...
结合起来:
databaseReference.orderByKey().limitToLast(1).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
String lastKey;
for (String child: dataSnapshot.getChildren()) {
lastKey = child.getKey();
}
databaseReference.orderByKey().endAt(lastKey).addValueEventListener((new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if (posts.size() > 0) {
posts.clear();
}
for (DataSnapshot ds : dataSnapshot.getChildren()) {
Post post = ds.getValue(Post.class);
//Getting a specific user's information (nickname purposes)
posts.add(0, post);
}
adapter.notifyDataSet...