第一个活动是新闻Feed屏幕,其中使用了RecyclerView + Firestore。我启用了“设置关闭”选项。
问题:
因为它是应用程序主页和新闻广播,所以我希望应用程序在内部扫描和检索Firestore数据时显示缓存的数据。喜欢Instagram,Twitter等...
因为当前打开此活动时,它已被称为Firestore查询并使用RecyclerView挂载数据。
在加载Firestore的新数据时,可以通过某种方式显示Recyclerview上次更新的缓存数据。
因为当互联网连接移动时,我国的质量很差。如果我最初离开调用Recyclerview,我会长时间加载Progressbar,直到连接稳定。
我的代码是:适配器Firestore + RecyclerView
编辑代码:
/*Firebase*/
mDb = FirebaseFirestore.getInstance();
mDb.collection("IndexTimeline_User").document(mCurrentUser.getUid()).collection("Posts").get().addOnSuccessListener(new OnSuccessListener<QuerySnapshot>() {
@Override
public void onSuccess(QuerySnapshot documentSnapshots) {
mQuery = documentSnapshots.getQuery();
mCardFeedList.setAdapter(mAdapter);
}
});
mDb.setFirestoreSettings(settings);
/* Recycler */
mCardFeedList = (RecyclerView) view.findViewById(R.id.explore_tab1_list);
mCardFeedList.setHasFixedSize(true);
mCardFeedList.setItemViewCacheSize(20);
mCardFeedList.setDrawingCacheEnabled(true);
mAdapter = new PostsExploreTab1Adapter(mQuery, this){
@Override
protected void onDataChanged() {
if (getItemCount() == 0) {
mCardFeedList.setVisibility(View.GONE);
mProgressBar.setVisibility(View.GONE);
//mTxtVazio.setVisibility(View.VISIBLE);
} else {
mCardFeedList.setVisibility(View.VISIBLE);
mProgressBar.setVisibility(View.GONE);
//mTxtVazio.setVisibility(View.GONE);
}
}
};
llmanager = new LinearLayoutManager(getActivity());
mCardFeedList.setLayoutManager(llmanager);
/*INICIADO O RECYCLERVIEW E ADAPTER*/
if (mAdapter != null) {
mAdapter.startListening();
}
感谢。
答案 0 :(得分:0)
从数据库获取数据时,请使用>>> collections.Counter(x for a in A for x in a)
Counter({0: 12, 1: 8})
并仅在从数据库加载数据时设置适配器。这意味着您将从缓存中读取数据,并且仅在新数据完全加载时才会读取,然后才会将其添加到RecyclerView中。您的代码应如下所示:
addOnSuccessListener