我正在尝试将 firebase 实时数据库中的数据检索到我的 recyclerview 中,但数据显示为空
Posted
技术标签:
【中文标题】我正在尝试将 firebase 实时数据库中的数据检索到我的 recyclerview 中,但数据显示为空【英文标题】:I am trying to retrieve data from firebase realtime database into my recyclerview but data is showing null 【发布时间】:2020-10-15 15:16:33 【问题描述】:我正在尝试从我的 firebase 数据库中检索组。在组内部我正在尝试从内部检索组数据列表和所有节点及其数据。我目前只创建了 1 个组,但在我的主页上我是无法检索数据。我没有收到任何错误,但它都显示为 null 并且我的文本视图为空白。
我的主要课程
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;
我的适配器和查看器
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);
我的模型课
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;
我的数据库结构
enter image description here
【问题讨论】:
我认为 this 可能会有所帮助。 【参考方案1】:您检查过 FCM 中的规则吗?
"rules":
".read": "true",
".write": "true"
基本上,使用 auth 设置 FCM 权限。
【讨论】:
【参考方案2】:主类变化---
来自
ref = database.getReference().child("Chatrooms").child("chatroomdata");
收件人
ref = database.getReference("Chatrooms/chatroomdata");
模型的结构也应该和你在数据库中的一样。还要检查数据库的读写权限。
【讨论】:
以上是关于我正在尝试将 firebase 实时数据库中的数据检索到我的 recyclerview 中,但数据显示为空的主要内容,如果未能解决你的问题,请参考以下文章
如何根据 Angular 6 中的 Firebase 实时数据库中的键获取单个记录
如何从 Firebase 实时数据库中获取数据到 Flutter 中的列表中?