【发布时间】:2017-07-19 00:38:50
【问题描述】:
但现在我一次从FireBase 获取所有数据。我想做的是一次获取 LIMITS 中的数据,例如 15 条记录.就像第一次用户从 Firebase 获取 15 条记录一样,当用户在屏幕底部/顶部加载更多数据时,应该有更多的记录来自 Firebase 并添加到列表的底部/顶部。
我已经实现了从Firebase 获取数据库顶部或底部的 15 条记录的逻辑,如下所示:-
public class ChatActivity extends AppCompatActivity implements FirebaseAuth.AuthStateListener {
private FirebaseAuth mAuth;
private DatabaseReference mChatRef;
private Query postQuery;
private String newestPostId;
private String oldestPostId;
private int startAt = 0;
private SwipeRefreshLayout swipeRefreshLayout;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_chat);
mAuth = FirebaseAuth.getInstance();
mAuth.addAuthStateListener(this);
mChatRef = FirebaseDatabase.getInstance().getReference();
mChatRef = mChatRef.child("chats");
/////GETTING THE VIEW ID OF SWIPE LAYOUT
swipeRefreshLayout = (SwipeRefreshLayout) findViewById(R.id.swipeRefreshLayout);
/////GETTING FIRST 10 RECORDS FROM THE FIREBASE HERE
mChatRef.limitToFirst(10).addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot child : dataSnapshot.getChildren()) {
oldestPostId = child.getKey();
System.out.println("here si the data==>>" + child.getKey());
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
//////FOR THE PULL TO REFRESH CODE IS HERE
swipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
// Refresh items
System.out.println("Here==>>> "+oldestPostId);
///HERE "oldestPostId" IS THE KEY WHICH I GET THE LAST RECORDS FROM THE FIREBASE
mChatRef.startAt(oldestPostId).addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot child : dataSnapshot.getChildren()) {
System.out.println("here AFTER data added==>>" + child.getKey());
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
});
}
我已经在这里搜索过它,但没有得到预期的结果,下面是我搜索过的链接
1.First Link
2.Second Link
3.Third Link
4.Forth Link
我已经实现了第一次获取 15 或 10 条记录的逻辑并且它有效..并且还实现了在限制中加载更多记录的逻辑,但是 没有得到正确的解决方案(不工作),请帮忙,让我知道我在哪里做错了..谢谢:)
编辑解决方案
:- 我已经在此链接上实现了加载更多或拉动刷新功能:- Firebase infinite scroll list view Load 10 items on Scrolling
【问题讨论】:
-
github.com/milon87/ShakeTopUp/tree/master/app/src/main/java/xyz/… 你可以检查一下。不过,这已由 MVP 实现。只需检查 ModelOfferImpl.java 文件。希望它会有所帮助。
-
参考这个以获得这个问题的完整解决方案:- stackoverflow.com/a/44796538/3946958
-
@RavindraKushwaha 你有没有机会用swift写一个完整的答案,我的意思是把你的整个代码解决方案放在swift中?谢谢
-
@bibscy 对不起,我只在安卓上工作。我会请我的朋友帮助你。你可以在这里发个问题。。肯定有人帮助你
-
@RavindraKushwaha 你能请你的朋友看看我的问题吗? stackoverflow.com/questions/51975438
标签: android firebase firebase-realtime-database firebase-storage