[英]How do I get/retrieve multiple data from uid in the firebase database in android?
[英]How do i get the key UID of a node with a selected value in firebase database in android?
下面是我在firebase中的數據庫
Areas
-AreaUID1
-Admin
-Admin1UID
-admin_name:""
-admin_area:""
-admin_email:""
-Admin2UID
-admin_name:""
-admin_area:""
-admin_email:""
.
.
-Events
-EventUid1
-event_name:""
-event_timings:""
-EventUid2
-event_name:""
-event_timings:""
.
.
-Gallery
-ImageUid1
-image_link:""
-AreaUid2
-Admin
-Admin1UID
-admin_name:""
-admin_area:""
-admin_email:""
-Admin2UID
-admin_name:""
-admin_area:""
-admin_email:""
.
.
-Events
-EventUid1
-event_name:""
-event_timings:""
-EventUid2
-event_name:""
-event_timings:""
.
.
-Gallery
-ImageUid1
-image_link:""
我想實現什么?
考慮到有一個可用的admin_areas列表在同一數據庫的幫助下填充的事實,我想獲取這些區域的AreaUID。 現在,當用戶單擊列表中的項目時,我想獲取其admin_area與從列表中選擇的admin_area匹配的節點的AreaUID。
例如:這是呈現給用戶的區域列表-
1)地區1
2)地區2
3)地區3
4)地區4
當用戶點擊區域2時,我想獲取其AreaUid。我該怎么做? 下面是一些代碼供參考
mDbRef = FirebaseDatabase.getInstance().getReference().child("Areas");
arr = new ArrayList<>();
listView = (ListView) findViewById(R.id.list_of_areas);
ValueEventListener listener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot snapshot : dataSnapshot.getChildren()) {
String areaUid = snapshot.getKey();
Log.i("AreaUID", areaUid);
showListOfAreas(areaUid);
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
System.out.println(databaseError.toException());
}
};
mDbRef.addValueEventListener(listener);
}
private void showListOfAreas(final String areaUid) {
pd.setTitle("Fetching Registered Areas");
pd.setMessage("Loading Areas...");
pd.show();
DatabaseReference mAreaNameRef = mDbRef.getRef().child(areaUid).child("Admin").child("admin1");
mAreaNameRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
final Admin admin = dataSnapshot.getValue(Admin.class);
arr.add(admin.getAdmin_colony());
adapter = new ArrayAdapter<>(ListOfAreasActivity.this,
android.R.layout.simple_list_item_1, android.R.id.text1, arr);
listView.setAdapter(adapter);
pd.dismiss();
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
String areaName = (String) parent.getItemAtPosition(position);
//findUserIdWithLocation(areaName);
SharedPreferences.Editor editor = getSharedPreferences("shared_prefs", MODE_PRIVATE).edit();
editor.putString("area_name", areaName);
editor.apply();
editor.commit();
Intent intent = new Intent(ListOfAreasActivity.this, MainActivity.class);
startActivity(intent);
finish();
}
});
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
根據您的評論,可以從showListOfAreas
的參數中檢索areaUid
private void showListOfAreas(final String areaUid) {
...
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
String areaName = (String) parent.getItemAtPosition(position);
// area's UID
String areaUidAfterClick = areaUid;
SharedPreferences.Editor editor = getSharedPreferences("shared_prefs", MODE_PRIVATE).edit();
editor.putString("area_name", areaName);
editor.apply();
editor.commit();
Intent intent = new Intent(ListOfAreasActivity.this, MainActivity.class);
startActivity(intent);
finish();
}
});
...
}
讓我知道這是否不是您的意思。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.