当前位置: 首页 > 知识库问答 >
问题:

Firebase回收器适配器未填充

屠晟睿
2023-03-14

我无法填充Firebase回收适配器。我最终想做的是,用户搜索一个名称,数据库中的结果将填充回收人员视图。

数据库结构如下所示:

要填充的代码如下所示,全部位于onCreate()

Query mQuery = FirebaseDatabase.getInstance().getReference().orderByChild("users");

        FirebaseRecyclerOptions<Users> options =
                new FirebaseRecyclerOptions.Builder<Users>()
                        .setQuery(mQuery, Users.class)
                        .build();

        mAdapter = new FirebaseRecyclerAdapter<Users, UsersViewHolder>(options) {
            @NonNull
            @Override
            public UsersViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
                View view = LayoutInflater.from(parent.getContext())
                        .inflate(R.layout.user_single_layout, parent, false);
                return new UsersViewHolder(view);
            }

            @Override
            protected void onBindViewHolder(@NonNull UsersViewHolder holder, int position, @NonNull Users model) {
                holder.setName(model.getFirstName());
            }
        };

        mUserList.setAdapter(mAdapter);

现在我只想让它填充数据库中的所有用户,但似乎什么都没有填充。

mUserList是一个recyclerView

这是UsersViewHolder类:公共静态类UsersViewHolder扩展了RecyclerView。视图持有者{View mView;TextView mUsername;

    UsersViewHolder(View itemView) {
        super(itemView);
        mView = itemView;
        mUsername = mView.findViewById(R.id.user_single_name);
    }

    public void setName(String name) {
        mUsername.setText(name);
    }
}

共有2个答案

乐正洲
2023-03-14

用那种方式。你自己遵循我的代码。

  FirebaseRecyclerOptions<Data> options=
            new FirebaseRecyclerOptions.Builder<Data>()
                    .setQuery(mIncomeDatabase,Data.class)
                    .setLifecycleOwner(this)
                    .build();

    FirebaseRecyclerAdapter<Data, MyViewHolder> firebaseRecyclelerAdapter = new FirebaseRecyclerAdapter<Data, MyViewHolder>(options) {
        @NonNull
        @Override
        public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
            return new MyViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.income_recycler_data,parent,false));
        }

        @Override
        protected void onBindViewHolder(@NonNull MyViewHolder holder, int position, @NonNull Data model) {
            holder.setName(model.getName());
            holder.setAmount(model.getAmount());
            holder.setType(model.getType());
            holder.setNote(model.getNote());
            holder.setAmount(model.getAmount());
            holder.setDate(model.getDate());
        }
    };
    recyclerView.setAdapter(firebaseRecyclelerAdapter);
令狐嘉禧
2023-03-14

要解决这个问题,请更改以下代码行:

Query mQuery = FirebaseDatabase.getInstance().getReference().orderByChild("users");

与:

Query mQuery = FirebaseDatabase.getInstance().getReference()
    .child("users")
    .orderByChild("first_name");

你少了一个孩子。不要忘记开始倾听变化:

@Override
protected void onStart() {
    super.onStart();
     mAdapter.startListening();
}

并且在不需要的时候停止倾听。

@Override
protected void onStop() {
    super.onStop();
    if( mAdapter!= null) {
         mAdapter.stopListening();
    }
}
 类似资料:
  • 变量'viewholder'、'position'&model'是从内部类访问的,它需要声明为final,但当我将其声明为final时,在适配器中显示错误。我正在使用Firebase 11.2.0请帮助我

  • 我正在寻找在Android中使用列表适配器和Recyview适配器的区别。关于性能的任何不同,使用它们的利弊。

  • 图像不显示。在一个SO例子中说要检查适配器中的计数,但我认为它是正确的。我在logcat中得到这个错误 这是代码主活动 这是我的适配器。

  • 我有“E/RecyclerView:没有连接适配器;跳过布局”错误消息。我在片段中有recycleView,所以我一定是在fragment1.java上做错了什么。 这是代码。如您所见,我在代码上设置了适配器,但我收到此错误。任何帮助将不胜感激。谢谢。 公共类Fragment1扩展片段{ } 公共类圣经适配器扩展回收器View.Adapter { }

  • 我正在尝试为我的项目创建聊天服务,为了做到这一点,我将我的消息存储在我从服务器获取的Firestore数据库中,并分配比较发送者id和当前用户id的文本。当我开始活动时,消息会正常显示,但当我向下滚动时,我的消息会停止显示,或者其他用户的消息会消失,这取决于聊天是基于哪个帐户打开的。 我好像不明白为什么会这样。 我的readMessages函数: 在这样做之后:

  • 我收到以下错误:“RecyclerView:未连接适配器;跳过布局”,但我已连接适配器...我尝试了许多不同的方法,但我无法解决错误。 我正在使用Volley库获取数据。当我启动活动时,只有进度条可见,直到结束,我收到上面的Logcat消息。我在中添加了带有适配器的。你能帮我吗? 这是我的代码: 主活动 地震适配器 MainActivity.xml 地震法。xml