FirebaseRecyclerAdapter点击时如何获取数据库父节点下的Name子节点数据
获取Firebase父节点下"Name"子节点数据的解决方案
嘿,我来帮你搞定这个问题!你想要获取当前父节点下名为"Name"的子节点数据,其实有两种实用的方式,根据你的需求选择就行:
方法一:直接使用已绑定的Model对象(推荐)
FirebaseRecyclerAdapter已经帮你把数据库中的数据解析到了AllUsers模型对象里,所以你完全可以直接调用模型类里的getName()方法来获取"Name"子节点的数据,这种方式既高效又简洁。
修改你代码里的user_name赋值部分:
// 替换原来不完整的那行代码 final String user_name = model.getName();
方法二:从数据库引用中直接获取(特殊场景使用)
如果因为某些特殊需求,你需要直接从数据库引用中读取这个字段,可以通过getRef(position)拿到当前项的数据库引用,再通过child("Name")定位到子节点,最后用getValue()获取数据:
final String user_name = getRef(position).child("Name").getValue(String.class);
⚠️ 注意:这种方式是同步读取数据,在主线程调用可能会影响性能,所以优先推荐方法一。
修正后的完整代码片段
firebaseRecyclerAdapter = new FirebaseRecyclerAdapter<AllUsers, UsersViewHolder>(options) { @Override protected void onBindViewHolder(@NonNull UsersViewHolder holder, int position, @NonNull AllUsers model) { holder.setName(model.getName()); holder.setStatus(model.getStatus()); final String user_id = getRef(position).getKey(); // 这里用方法一获取user_name final String user_name = model.getName(); holder.mView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(getActivity(), Chat.class); intent.putExtra("Recievers_Id", user_id); intent.putExtra("Recievers_Name", user_name); startActivity(intent); } }); } @Override public UsersViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = LayoutInflater.from(parent.getContext()) .inflate(R.layout.all_users_layout, parent, false); return new UsersViewHolder(view); } }; mUsersList.setAdapter(firebaseRecyclerAdapter); return rootView;
内容的提问来源于stack exchange,提问作者user9646251
相关产品推荐
相关产品推荐

