Android “我的回收器”视图为空,即使它包含数据

Android “我的回收器”视图为空,即使它包含数据,android,firebase,google-cloud-firestore,android-recyclerview,android-adapter,Android,Firebase,Google Cloud Firestore,Android Recyclerview,Android Adapter,我有一个从Firebase检索数据的应用程序,特别是从Firestore检索数据,问题是显示数据为空的recycler视图,尽管它在另一个片段中工作,具有相同的逻辑,但我不知道我错在哪里!正如我所说的,片段是完全空的,而且如果我添加了一个文本视图或按钮,它会正常显示,但是回收器视图不会显示 ps:当我复制相同的代码时,我更改了布局名称和回收器名称,以指向片段的其他布局和回收器视图; 这是碎片 FavoriteFragment.java:处理代码的片段 public View onCreateVi

我有一个从Firebase检索数据的应用程序,特别是从Firestore检索数据,问题是显示数据为空的recycler视图,尽管它在另一个片段中工作,具有相同的逻辑,但我不知道我错在哪里!正如我所说的,片段是完全空的,而且如果我添加了一个文本视图或按钮,它会正常显示,但是回收器视图不会显示

ps:当我复制相同的代码时,我更改了布局名称和回收器名称,以指向片段的其他布局和回收器视图; 这是碎片

FavoriteFragment.java:处理代码的片段

public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        View view = inflater.inflate(R.layout.fragment_favorite, container, false);



        recyclerView = view.findViewById(R.id.fav_recycler);


        linearLayoutManager = new LinearLayoutManager(getActivity());
        recyclerView.setLayoutManager(linearLayoutManager);

        mAuth = FirebaseAuth.getInstance();
        FirebaseUser auth_user = mAuth.getCurrentUser();
        db = FirebaseFirestore.getInstance();

        //Fetch Users Info
        Query query = db.collection("posts")
                .orderBy("posttime", Query.Direction.DESCENDING); // order the query by date

        FirestoreRecyclerOptions<Posts> response = new FirestoreRecyclerOptions.Builder<Posts>()
                .setQuery(query, Posts.class)
                .build();

        adapter = new MainAdapter(response);
        adapter.notifyDataSetChanged();
        recyclerView.setAdapter(adapter);



        return view;
    }
以及firestore bellow中帖子的屏幕截图:


好吧,我想起来了,我错过了启动和停止监听适配器的onStart和onStop

    @Override
    public void onStart() {
        super.onStart();
        adapter.startListening();
    }

    @Override
    public void onStop() {
        super.onStop();
        adapter.stopListening();
    }

适配器=新的主适配器(响应);recyclerView.setAdapter(适配器);adapter.notifyDataSetChanged();请进行此更改并再次运行好吗?@Md.Shofiulla这不是问题,即使其他片段使用相同的代码也不起作用。好的,那么我已经运行了您的代码来查找您的问题。@Md.Shofiulla好的,如果您需要什么,请告诉我!请编辑您的问题并将您的数据库结构添加为屏幕截图。请同时添加“Posts”类的内容。
public class MainAdapter extends FirestoreRecyclerAdapter<Posts, MainAdapter.ViewHolder> {
    /**
     * Create a new RecyclerView adapter that listens to a Firestore Query.  See {@link
     * FirestoreRecyclerOptions} for configuration options.
     *
     * @param options
     */
    public MainAdapter(@NonNull FirestoreRecyclerOptions options) {
        super(options);
    }

    private FirebaseFirestore db;
    private DocumentReference documentReference;
    private FirebaseAuth mAuth;
    boolean isthere = false;
    boolean isExist = false;

    @Override
    protected void onBindViewHolder(@NonNull ViewHolder holder, int position, @NonNull Posts post) {

        db = FirebaseFirestore.getInstance();
        mAuth = FirebaseAuth.getInstance();
        documentReference = db.collection("users").document(mAuth.getUid());
        holder.txtTitle.setText(post.getName());
        holder.txtDesc.setText(post.getTitle() + "\n" +post.getDesc() + "\n" + post.getBloodtype() + "\n" + post.getCity() + "\n" + post.getNumber()+ "\n" + post.getDeadline());

        Glide.with(holder.image.getContext()).load(post.getImage())
                .into(holder.image);

        holder.root.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Snackbar.make(v, post.getUserid() + "\n" + post.getName() + "\n" +post.getBloodtype() + "\n" + post.getCity(), Snackbar.LENGTH_LONG)
                        .setAnchorView(R.id.navigation) // Set SnackBar above the BottomNavigationView
                        .show();
            }
        });

        Posts newPost = new Posts(post.getUserid(), post.getName(), post.getTitle(),post.getDesc(), post.getDeadline(), post.getNumber(),
                post.getCity(), post.getBloodtype(), post.getImage(), post.getPosttime(), post.getPostid());

        holder.fav.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                if(isChecked) {
//                    Toast.makeText(buttonView.getContext(), "Added to favorite", Toast.LENGTH_SHORT).show();
                    if (isExist == false) {
                  
                        db.collection("users").document(mAuth.getUid()).collection("favorites").document(post.getPostid())
                                .set(newPost)
                                .addOnCompleteListener(new OnCompleteListener<Void>() {
                                    @Override
                                    public void onComplete(@NonNull Task<Void> task) {
                                        Toast.makeText(buttonView.getContext(), "Succeed \nBoolean: " + isExist, Toast.LENGTH_SHORT).show();
                                    }
                                });
                    }
                }
                else {
//                    removefromfav(post.getPostid(), buttonView);
                    documentReference.collection("favorites").document(post.getPostid())
                            .delete()
                            .addOnSuccessListener(new OnSuccessListener<Void>() {

                                public void onSuccess(Void aVoid) {
//                                    Toast.makeText(buttonView.getContext(), "Removed from favorite " + isExist, Toast.LENGTH_SHORT).show();
                                }
                            })
                            .addOnFailureListener(new OnFailureListener() {
                                @Override
                                public void onFailure(@NonNull Exception e) {

                                }
                            });
                }
            }
        });

        documentReference.collection("favorites").document(post.getPostid())
                .get()
                .addOnCompleteListener(new OnCompleteListener<DocumentSnapshot>() {
                    @Override
                    public void onComplete(@NonNull Task<DocumentSnapshot> task) {
                        if(task.isSuccessful()){
                            isExist = task.getResult().exists();
                            if (isExist == true) {
                                holder.fav.setChecked(true);
                            }
                        }
                    }
                });
    }



    @NonNull
    @Override
    public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(parent.getContext())
                .inflate(R.layout.users_item, parent, false);
        return new ViewHolder(view);
    }



    public static class ViewHolder extends RecyclerView.ViewHolder {
        public LinearLayout root;
        public TextView txtTitle;
        public TextView txtDesc;
        public ImageView image;
        public ToggleButton fav;


        public ViewHolder(View itemView) {
            super(itemView);
            root = itemView.findViewById(R.id.list_root);
            txtTitle = (TextView) itemView.findViewById(R.id.list_title);
            txtDesc = (TextView) itemView.findViewById(R.id.list_desc);
            image = (ImageView)itemView.findViewById(R.id.list_image);
            fav = (ToggleButton)itemView.findViewById(R.id.favbutton);

        }
    }
}
public class Posts {
    private String userid;
    private String name;
    private String title;
    private String desc;
    private String deadline;
    private String number;
    private String city;
    private String bloodtype;
    private String image;
    private String posttime;
    private String postid;


    public Posts(){

    }

    public Posts(String userid,String name, String title, String desc, String deadline,
                String number, String city, String bloodtype, String image, String posttime, String postid){
        this.userid = userid;
        this.name = name;
        this.title = title;
        this.desc = desc;
        this.deadline = deadline;
        this.number = number;
        this.city = city;
        this.bloodtype = bloodtype;
        this.image = image;
        this.posttime = posttime;
        this.postid = postid;
    }

    public String getUserid(){

        return userid;
    }
    public String getName(){

        return name;
    }
    public String getTitle(){

        return title;
    }
    public String getDesc(){

        return desc;
    }
    public String getDeadline(){

        return deadline;
    }
    public String getNumber(){

        return number;
    }
    public String getCity(){

        return city;
    }
    public String getBloodtype(){

        return bloodtype;
    }
    public String getImage(){

        return image;
    }
    public String getPosttime(){

        return posttime;
    }
    public String getPostid(){

        return postid;
    }

}
    @Override
    public void onStart() {
        super.onStart();
        adapter.startListening();
    }

    @Override
    public void onStop() {
        super.onStop();
        adapter.stopListening();
    }