小编Hor*_*sie的帖子

如何使用RxJava 2改进从Firebase数据库读取的Flowable <Object>数据?

我有Recycler Viewer,它显示来自Fire Base db的数据,但是初始List包含大约4k个元素.我试图只显示前15个元素,而不是等待加载完整列表,但不知道如何做到这一点.

我试图通过Subscriber获取(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());
                           }
                       }
            );
    }
Run Code Online (Sandbox Code Playgroud)

发布者 - 数据源(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 …
Run Code Online (Sandbox Code Playgroud)

mvp observable firebase recycler-adapter firebase-realtime-database

6
推荐指数
1
解决办法
327
查看次数