我想通过单击列表视图中的项目来获取用户的唯一 ID...我尝试使用datasnapshot.getKey
方法,但没有发生根据一些 Youtube 视频getRef(position).getKey();
应该工作,但显示无法解决符号getRef
......为什么?这是我的代码
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference usersRef = rootRef.child("Users");
ValueEventListener eventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
ListView listView = (ListView) rootView.findViewById(R.id.usersList);
ArrayAdapter<String> adapter;
adapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1, android.R.id.text1, al);
for(DataSnapshot ds : dataSnapshot.getChildren()) {
name = ds.child("Name").getValue().toString();
list_user_id = ds.getKey();
String user_id = getRef(position).getKey();
// Log.d("TAG", name);
al.add(name);
}
listView.setAdapter(adapter);
}
@Override
public void onCancelled(DatabaseError databaseError) {
Toast.makeText(getActivity(),"Please Check Your Internet Connection",Toast.LENGTH_SHORT).show();
}
};
usersRef.addListenerForSingleValueEvent(eventListener);
listuser = ds.getKey
方法不起作用,所以我尝试了getRef(position).getKey
但它不接受......请有人帮忙
usersList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
UserDetails.chatWith = al.get(position);
String user_id = al.get(position);
Intent intent = new Intent(getActivity(), Chat.class);
intent.putExtra("visit_user_id",user_id);
intent.putExtra("user_name",name);
startActivity(intent);
}
});
return rootView;
字符串用户ID返回用户的名称.. idk y... 如果我把list_user_id放在"visit_user_id"之后,它返回我自己的用户ID... any1 至少可以告诉为什么 itemclick 中的用户 ID 返回名称?
要获取密钥,您需要以与获取名称相同的方式进行操作:
String user_id = ds.child("Id").getValue().toString();
假设数据库中的id
字段称为 Id
。
getRef()
方法返回一个DatabaseReference
对象可以在DataSnapshot
对象上调用。与此 id 无关。