Fire Base db'den veri görüntüleyen Recycler Viewer var, ancak ilk Liste yaklaşık 4k öğeleri içeriyor. Tam listenin yüklenmesini beklemek yerine sadece ilk 15 öğeyi göstermeye çalışıyorum ancak nasıl yapılacağından emin değilim.Nasıl geliştirilir Firebase db kullanarak Flowable <Object> veri okuma RxJava 2?
(x) öğelerini Abone aracılığıyla almaya çalışıyorum, ancak okuma performansını artırmaz (hala Firebase DB'den 4k öğeleri bekler). Bu nasıl hızlanır?
Abone - Sunucu
@Override
public void onBindViewHolder(final ListContentFragment.ViewHolder holder, int position) {
modelInterface.getDataFromFireBase("FinalSymbols")
.take(15)
.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Consumer<DataSnapshot>() {
@Override
public void accept(DataSnapshot dataFromDb) throws Exception {
//update TextView inside Recycler Viewer
holder.name.setText(dataFromDb.child(String.valueOf(holder.getAdapterPosition())).child("description").getValue().toString());
holder.description.setText(dataFromDb.child(String.valueOf(holder.getAdapterPosition())).child("categoryName").getValue().toString());
}
}
);
}
Yayınevi - Veri (Firebase db) kaynağı
@Override
public Flowable<DataSnapshot> getDataFromFireBase(final String childName) {
return Flowable.create(new FlowableOnSubscribe<DataSnapshot>() {
@Override
public void subscribe(final FlowableEmitter<DataSnapshot> e) throws Exception {
databaseReference.child(childName).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
e.onNext(dataSnapshot);
e.onComplete();
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
}, BackpressureStrategy.BUFFER);
Ama sonra nasıl 15 sınırı geçmiş belgeleri almak ki? Kullanıcı, RecyclerView içinde aşağı doğru kaydırırsa, otomatik olarak Firebase'i otomatik olarak –
Pagination'ın buradaki popüler bir konu olduğu noktadan çıkarır. [Bu cevaplardan biri] bölümüne bakabilirsiniz (https://stackoverflow.com/search?q=firebase+pagination) –