【问题标题】:I am trying to retrieve data from firebase realtime database into my recyclerview but data is showing null我正在尝试将 firebase 实时数据库中的数据检索到我的 recyclerview 中,但数据显示为空
【发布时间】: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 可能会有所帮助。

标签: java android database firebase android-studio


【解决方案1】:

您检查过 FCM 中的规则吗?

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

基本上,使用 auth 设置 FCM 权限。

【讨论】:

    【解决方案2】:

    主类变化---

    来自

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

    收件人

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

    模型的结构也应该和你在数据库中的一样。还要检查数据库的读写权限。

    【讨论】:

      猜你喜欢
      • 2018-08-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-21
      • 1970-01-01
      • 1970-01-01
      • 2019-03-23
      相关资源
      最近更新 更多