简体   繁体   中英

I am trying to retrieve data from firebase realtime database into my recyclerview but data is showing null

I am trying to retrieve the groups from my firebase database.Inside groups I am trying to retrieve the group data list and all the nodes and their data from inside.I currently have just 1 group made but on my home page I am not able to retrieve the data.I am not getting any error but it is all showing null and my textviews are blank.

My main class

public class Homepage extends Fragment  {


    private RecyclerView mRecyclerView;
    private DatabaseReference ref;
    private FirebaseDatabase database;
    private MyAdapter myAdapter;
    private List<model> list;




    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View v =  inflater.inflate(R.layout.fragment_homepage, container, false);


        FloatingActionButton floatingActionButton = v.findViewById(R.id.floatingActionButton);
        mRecyclerView = v.findViewById(R.id.recyclerview);
        mRecyclerView.setHasFixedSize(true);
        mRecyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
        database = FirebaseDatabase.getInstance();
        ref = database.getReference().child("Chatrooms").child("chatroomdata");
        list = new ArrayList<>();

        ref.addListenerForSingleValueEvent(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot snapshot) {
                if (snapshot.exists()) {
                    for (DataSnapshot npsnapshot : snapshot.getChildren()) {
                        model l = npsnapshot.getValue(model.class);
                        list.add(l);
                    }
                    myAdapter = new MyAdapter(list);
                    mRecyclerView.setAdapter(myAdapter);
                }

            }

            @Override
            public void onCancelled(@NonNull DatabaseError error) {

            }
        });






        floatingActionButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                startActivity(new Intent(getActivity(),createchatroom.class));
            }
        });


        return v;








    }

My adapter and viewholder

public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder>{
        private List<model> list;

        public MyAdapter(List<model> list) {
            this.list = list;
        }

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

        @Override
        public void onBindViewHolder(@NonNull MyAdapter.ViewHolder holder, int position) {
            model ld = list.get(position);
            holder.title.setText(ld.getName());
            holder.viewers.setText(ld.getViewers());
            Glide.with(getActivity()).load(ld.getImage()).into(holder.circleImageView);
            String documentid = ld.getDocumentid();

        }

        @Override
        public int getItemCount() {
            return list.size();
        }

        public class ViewHolder extends RecyclerView.ViewHolder{
            private TextView title,viewers;
            CircleImageView circleImageView;

            public ViewHolder(View itemView) {
                super(itemView);
                title=(TextView)itemView.findViewById(R.id.chatroomtitlerecycler);
                viewers=(TextView)itemView.findViewById(R.id.chatroomviewersrecycler);
                circleImageView = itemView.findViewById(R.id.chatroomdisplayimagerecycler);


            }
        }

My model class

public static class model{
        String image,name,documentid,viewers;

        public model(){

        }

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }

        public String getImage() {
            return image;
        }

        public void setImage(String image) {
            this.image = image;
        }

        public String getDocumentid() {
            return documentid;
        }

        public void setDocumentid(String documentid) {
            this.documentid = documentid;
        }

        public String getViewers() {
            return viewers;
        }

        public void setViewers(String viewers) {
            this.viewers = viewers;
        }

        public model(String image,String name, String documentid, String viewers) {
            this.image = image;
            this.name = name;
            this.documentid = documentid;
            this.viewers = viewers;
        }
    }

My database structure

enter image description here

did you check rules in FCM?

{
  "rules": {
    ".read": "true",
    ".write": "true"
  }
}

basically, FCM permission set using auth.

Change in Main Class ---

From

ref = database.getReference().child("Chatrooms").child("chatroomdata");

To

ref = database.getReference("Chatrooms/chatroomdata");

Also the structure of model should be the same as that you have in database. Check for read and write permission of database too.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM