Тем не менее, теперь я получаю все данные из FireBase
за один раз. Что я хочу сделать, чтобы получать данные в LIMITS, как 15 записей одновременно. Как и в первый раз, пользователь получает 15 записей из Firebase
, а когда пользователь загружает больше данных в нижней/верхней части экрана, из Firebase
должно поступить еще 15 записей и добавляется в нижнюю/верхнюю часть списка.
Я реализовал логику, чтобы получить 15 записей в верхней или нижней части базы данных из Firebase
, как показано ниже: -
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) {
}
});
}
});
}
Я искал его здесь в SO, но не получил ожидаемого результата, по ссылке, по которой я его искал
1. Первая ссылка
2. Вторая ссылка
3. Третья ссылка
4. Четвертая ссылка
Пожалуйста, посмотрите на мою структуру данных Firebase на изображении.
Я реализовал логику для получения 15 или 10 записей в первый раз, и она работает.. и также реализовала логику для загрузки большего количества записей в пределах, но не получаю правильное решение (НЕ РАБОТАЕТ), пожалуйста, помогите и дайте мне знать, где я делаю неправильно.. Спасибо :)
ОБНОВЛЕНИЕ РЕШЕНИЕ
: - Я реализовал функцию "загрузить больше" или "обновить" по этой ссылке: - Представление списка бесконечной прокрутки Firebase. Загрузка 10 элементов при прокрутке.