0

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

Harsh Patil
  • 13
  • 1
  • 5
  • I think **[this](https://stackoverflow.com/questions/49383687/how-can-i-retrieve-data-from-firebase-to-my-adapter/49384849)** might help. – Alex Mamo Jun 25 '20 at 09:06

2 Answers2

0

did you check rules in FCM?

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

basically, FCM permission set using auth.

S T
  • 1,068
  • 2
  • 8
  • 16
0

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.

Hey.Its_RJ
  • 115
  • 1
  • 9