我在填充 Firebase 回收器适配器时遇到问题。我最终想要做的是,用户搜索一个名称,然后数据库中的结果将填充 recyclerView。
数据库结构如下所示:
要填充的代码如下所示,全部在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 类: public static class UsersViewHolder extends RecyclerView.ViewHolder { View mView; TextView 用户名;
UsersViewHolder(View itemView) {
super(itemView);
mView = itemView;
mUsername = mView.findViewById(R.id.user_single_name);
}
public void setName(String name) {
mUsername.setText(name);
}
}
要解决此问题,请更改以下代码行:
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();
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句