[英]How to get the data of a ListView item the user has clicked on with listview.GetItemAtPosition(e.Position)?
[英]How to get the user's unique id of the item clicked on listview
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();
phonenumber=ds.getKey();
list_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);
我有一個所有用戶的活動...如果我單擊某個用戶,我想獲取其唯一ID,但是我無法執行此操作...行中的錯誤-list_user_id = getRef(position).getKey; 我獲取id的方式錯誤還是該方法過時了?
由於您具有列表視圖,因此可以執行以下操作:
lists.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
final String selectedFromList = (String)lists.getItemAtPosition(i);
db= FirebaseDatabase.getInstance().getReference().child("Users");
db.orderByChild("username").equalTo(selectedFromList).addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot data: dataSnapshot.getChildren()){
String ids=datas.getKey();
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
});
假設您有一個包含用戶名的列表視圖,並假設您在數據庫中包含此列表:
Users
userid
username://name
userid
username: //name
使用final String selectedFromList = (String)lists.getItemAtPosition(i);
在這種情況下,您可以獲取該項目的username
。 然后使用查詢equalTo()
,它將檢查數據庫並使用getKey()
向您返回該用戶的ID。
您可以通過在onDataChange方法中使用Map從Firebase DB獲取所有鍵值,如下所示:
Map<String, Object> td = null;
for (com.google.firebase.database.DataSnapshot postSnapshot : dataSnapshot.getChildren()) {
td = (HashMap<String, Object>) postSnapshot.getValue();
String userName= (String) td.get("userName");
String mobileNUM= (String) td.get("mobileNUM");
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.