Below is my database in 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:""
What i want to achieve?
I want to get the AreaUID of the areas considering the fact that there is a list of admin_areas available populated with the help of the same database. Now when a user clicks on an item in the list i want to get the AreaUID of the node whose admin_area matches the selected admin_area from the list.
For eg) Here is a list of areas presented to the user -
1)Area 1
2)Area 2
3)Area 3
4)Area 4
When the user taps on Area 2 i want to fetch its AreaUid.How do i do this? Below is some code for reference
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) {
}
});
}
Based on your comment, the areaUid
can be retrieved from the showListOfAreas
's parameter
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();
}
});
...
}
Let me know if this is not what you meant.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.