Java 如何在自动启动应用程序时加载RecyclerView?

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

我用recyclerview创建了一个片段,当我执行应用程序时,它不会自动加载数据,因为我必须移动到另一个视图,然后返回到这个特定视图以加载数据,我希望当应用程序启动recyclerview中的列表时,它会自动从firestore数据库检索数据

如果需要我的代码,请务必告知

提前感谢您的帮助

家政课

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);