Java 如何在自动启动应用程序时加载RecyclerView?
我用recyclerview创建了一个片段,当我执行应用程序时,它不会自动加载数据,因为我必须移动到另一个视图,然后返回到这个特定视图以加载数据,我希望当应用程序启动recyclerview中的列表时,它会自动从firestore数据库检索数据 如果需要我的代码,请务必告知 提前感谢您的帮助 家政课Java 如何在自动启动应用程序时加载RecyclerView?,java,android,firebase,google-cloud-firestore,adapter,Java,Android,Firebase,Google Cloud Firestore,Adapter,我用recyclerview创建了一个片段,当我执行应用程序时,它不会自动加载数据,因为我必须移动到另一个视图,然后返回到这个特定视图以加载数据,我希望当应用程序启动recyclerview中的列表时,它会自动从firestore数据库检索数据 如果需要我的代码,请务必告知 提前感谢您的帮助 家政课 public class HomeFragment extends Fragment { RelativeLayout mParent; //FloatingActionButt
public class HomeFragment extends Fragment {
RelativeLayout mParent;
//FloatingActionButton addButton;
private static final String TAG = "DocSnippets";
private FirebaseFirestore db = FirebaseFirestore.getInstance();
private CollectionReference PostsRef = db.collection("posts");
private CollectionReference likesRef;
private PostsAdapter adapter;
private FirestoreRecyclerOptions options;
private FirebaseAuth mAuth;
private String mUserId, id;
private Button commentsbutton;
RecyclerView recyclerView;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
//just change the fragment_dashboard
//with the fragment you want to inflate
//like if the class is HomeFragment it should have R.layout.home_fragment
//if it is DashboardFragment it should have R.layout.fragment_dashboard
mAuth = FirebaseAuth.getInstance();
mUserId = mAuth.getUid();
likesRef = db.collection("users").document(mUserId).collection("likes");
final View view = inflater.inflate(R.layout.fragment_home, container, false);
final FragmentActivity c = getActivity();
LinearLayoutManager layoutManager = new LinearLayoutManager(c);
Query query = PostsRef.orderBy("timestamp", Query.Direction.DESCENDING);
FirestoreRecyclerOptions<PostsModel> options = new FirestoreRecyclerOptions.Builder<PostsModel>()
.setQuery(query, PostsModel.class)
.build();
adapter = new PostsAdapter(options);
recyclerView = (RecyclerView) view.findViewById(R.id.recycler_view);
// recyclerView.setHasFixedSize(true);
recyclerView.setLayoutManager(new LinearLayoutManager(c));
recyclerView.setAdapter(adapter);
commentsbutton = (Button) view.findViewById(R.id.commenting_button);
mParent =view.findViewById(R.id.relative_home);
// return inflater.inflate(R.layout.fragment_home, null);
adapter.setOnItemClickListener(new PostsAdapter.OnItemClickListener() {
@Override
public void onItemClick(DocumentSnapshot documentSnapshot, int position) {
PostsModel note = documentSnapshot.toObject(PostsModel.class);
id = documentSnapshot.getId();
String path = documentSnapshot.getReference().getPath();
Log.d(TAG, "String post Id is: " + id);
Intent gotoClickPostDetailActivity = new Intent (view.getContext(), ClickPost.class);
gotoClickPostDetailActivity.putExtra("PostKey",id);
startActivity(gotoClickPostDetailActivity);
//
// Toast.makeText(c, "Position: " + position + " ID: " + id, Toast.LENGTH_SHORT).show();
//Toast.makeText(HomeFragment.this, "Position: " + position + " ID: " + id, Toast.LENGTH_SHORT).show();
}
});
return view;
}
private String getTime(long timestamp){
long ts = timestamp*1000;
SimpleDateFormat sdf = new SimpleDateFormat("hh:mm a");
String time = sdf.format(new Date(ts));
return time;
}
@Override
public void onStart() {
super.onStart();
adapter.startListening();
}
@Override
public void onStop() {
super.onStop();
adapter.stopListening();
}
}
您的问题在这行代码中
Query query = PostsRef.orderBy("timestamp", Query.Direction.DESCENDING);
FirestoreRecyclerOptions<PostsModel> options = new
FirestoreRecyclerOptions.Builder<PostsModel>()
.setQuery(query, PostsModel.class)
.build();
adapter = new PostsAdapter(options);
Query Query=PostsRef.orderBy(“时间戳”,Query.Direction.DESCENDING);
FirestoreRecyclerOptions选项=新建
FirestoreRecyclerOptions.Builder()
.setQuery(查询,PostsModel.class)
.build();
适配器=新的后置适配器(选件);
PostsRef.orderBy需要一些时间才能从firebase获得结果,但您可以立即设置导致问题的结果请添加您正在使用的代码。嘿,Alex,代码已添加,请进一步协助。谢谢你,你分享的代码太多了。请编辑您的问题并隔离问题,同时请添加您的数据库结构。我已按要求编辑了问题中的代码,用户和用户帖子有不同的集合,我可以共享数据结构的屏幕截图,但它是聚合的one@AlexMamo嘿,救命啊不是这样的,基本上有一个底部选项卡导航,当我启动应用程序时,它不会从firestore加载任何数据,但当我切换到另一个选项卡,然后切换回同一个选项卡时,它会在2秒内加载数据。。。。请提供建议,谢谢
Query query = PostsRef.orderBy("timestamp", Query.Direction.DESCENDING);
FirestoreRecyclerOptions<PostsModel> options = new
FirestoreRecyclerOptions.Builder<PostsModel>()
.setQuery(query, PostsModel.class)
.build();
adapter = new PostsAdapter(options);