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
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.