最初のアクティビティーは、RecyclerView + Firestoreが使用されるニュースフィード画面です。オフライン設定が有効になっています。キャッシュされたデータをリカバリーRecyclerView + Firestore
問題:
それがアプリケーションのホームページやニュース放送ですので、私は内部スキャンとFirestoreデータを取得中にキャッシュされたデータを表示するためのアプリケーションをしたいと思います。 Instagram、Twitterなどと同様...
現在のところ、このアクティビティを開くとき、Firestore Queryと呼ばれ、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();
}
感謝。
ここでこのクエリを実行しますか?クエリを設定しますか? @AlexMamo – TiagoIB
もし 'yourRef'がそうであれば、' get() 'メソッドを使用してください(mQuery = mDb.collection(" IndexTimeline_User ")。 'addOnSuccessListener'を実行します。 –
私の言及は質問とまったく同じです。それはうまくいくのでしょうか? http://prntscr.com/hqj4zt @AlexMamo – TiagoIB