Próbuję utworzyć aplikację do czatu, używam Firebase jako mojego zaplecza, Zapełniam mój listview onCreate() z ostatnich 10 wysłanych wiadomości, i I wystarczy, że kiedy użytkownik przewinie się w górę^za każdym razem załaduje 10 kolejnych.Firebase, aby załadować więcej przedmiotów na przewijanie (Android)
Mam wszystko działa, problem polega na tym, że baza ogniowa ładuje za każdym razem dane wszystkie i nie zwiększa o 10 istniejących danych.
Na przykład: ładuje 10 wiadomości przy starcie, a kiedy przewijam w górę, ładuje 20 wiadomości, a następnie ładuje 30 wiadomości, zamiast tylko ładować 10 kolejnych naraz.
Jest to kod:
//Listview to find when user is scrolling and reach the top i.e firstVisibleItem == 0
messagesList.setOnScrollListener(new AbsListView.OnScrollListener() {
@Override
public void onScrollStateChanged(AbsListView absListView, int i) {
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem,
int visibleItemCount, int totalItemCount) {
if (firstVisibleItem == 0 && !loading) {
msgNum += 10;
setMessagesList(msgNum); //your load more function
}
}
});
//Firebase to load more on scroll code:
public void setMessagesList(int msgNum) {
MessegesRef2 = database.getReference("chatsMessages").child(chatID);
messageValueListener = MessegesRef2.orderByChild("creationDate").limitToLast(msgNum).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
loading = true;
for (DataSnapshot data: dataSnapshot.getChildren()) {
ChatMessage chatMessage = data.getValue(ChatMessage.class);
chatMessageAdapter.add(chatMessage);
chatMessageAdapter.notifyDataSetChanged();
}
loading = false;
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
Tworzysz odniesienie do wiadomości za każdym razem, gdy lista się przewija. To jest powód, dla którego aplikacja pobiera wszystkie dane. –
Hej Febi, tak, wiem to. Dlatego pytam, jak można to zrobić za pomocą Firebase? –
Wystarczy zaktualizować zapytanie na przewijanie listy zamiast wielokrotnie tworzyć odniesienia. –