6
私はFire Baseのデータを表示するRecycler Viewerを持っていますが、最初のリストには約4k個の要素が含まれています。私は完全なリストがロードされるのを待つのではなく、最初の15の要素だけを表示しようとしていますが、それを行う方法がわかりません。RxJava 2を使用してFlowable <Object>のデータをFirebaseデータベースから読み込む方法を教えてください。
私はサブスクライバ経由で(x)要素を取得しようとしていますが、読み込みパフォーマンスは改善されません(Firebase DBから4k要素まで待機します)。これをスピードアップする方法は?
加入者 - プレゼンター
@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());
}
}
);
}
出版社 - データのソース(FireBaseデシベル)
@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);
しかし、その後、どのように15の限界過去の文書を検索しますか?ユーザーがRecyclerView内を完全にスクロールすると、Firebaseは自動的にそのポイントを超えるデータをポーリングします。 –
ページネーションはここでは一般的なトピックです。 [これらの回答の1つ]を見ることができます(https://stackoverflow.com/search?q=firebase+pagination) –