【发布时间】:2017-12-20 17:54:26
【问题描述】:
第一个活动是新闻提要屏幕,其中使用了 RecyclerView + Firestore。我启用了“离线设置”选项。
问题:
因为它是应用程序主页和新闻广播,我希望应用程序在内部扫描和检索 Firestore 数据时显示缓存数据。像 Instagram、Twitter 等...
因为目前在打开这个activity的时候,已经调用了Firestore Query,并且用RecyclerView挂载了数据。
在加载 Firestore 的新数据时,它会以某种方式显示 Recyclerview 上次更新的缓存数据。
因为当互联网连接是移动时,我们国家的质量很差。如果我最初不调用 Recyclerview,我会在很长一段时间内加载进度条,直到连接稳定。
我的代码是:适配器 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();
}
谢谢。
【问题讨论】:
-
对于未来的访问者,您可以查看 here,其中我已经逐步解释了如何使用 Android 将 Firestore 中的数据显示到
RecyclerView。
标签: android firebase google-cloud-firestore