我正在尝试以访客身份登录用户,这意味着他只能查看任何内容但不能与任何内容进行交互。我这样做有些问题。
首先,我使用了匿名登录,因此完全可以登录用户。
现在我希望用户从areaUID列表中进行选择,以查看该特定区域的详细信息
我的数据库看起来像这样,
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:""
等等。
现在我想向用户显示位于不同AreaUids中的几个admin_area的列表。我正在使用FirebaseRecyclerAdapter
,我需要帮助实现上述问题。我希望用户能够查看他/她选择的特定区域的所有图库图像和事件。
mDbRef = FirebaseDatabase.getInstance().getReference().child("Areas");
allAreaUids = new ArrayList<>();
ValueEventListener listener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot snapshot) {
//This is where i want to populate my arraylist with all the AreaUids. How do i do it?
}
@Override
public void onCancelled(DatabaseError databaseError) {
// Getting Post failed, log a message
System.out.println(databaseError.toException());
// ...
}
};
mDbRef.addValueEventListener(listener);
adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, android.R.id.text1, allAreaUids);
ListView listView = (ListView) findViewById(R.id.list_of_areas);
listView.setAdapter(adapter);
My Areas类(注意构造函数以及getter和setters方法也存在
public class Areas {
private Events Events;
private GalleryPics Gallery;
private Admin Admin;
public Areas(){
}
.
.
.
}
答案 0 :(得分:0)
要显示特定区域的Events
,请使用以下代码:
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference areasRef = rootRef.child("Areas");
ValueEventListener eventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot ds : dataSnapshot.getChildren()) {
String areaUid = ds.getKey();
DatabaseReference eventsRef = rootRef.child("Areas").child(areaUid).child("Events");
ValueEventListener valueEventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot child : dataSnapshot.getChildren()) {
String event_name = child.child("event_name").getValue(String.class);
Log.d("TAG", event_name);
}
}
@Override
public void onCancelled(DatabaseError databaseError) {}
};
eventsRef.addListenerForSingleValueEvent(valueEventListener);
}
}
@Override
public void onCancelled(DatabaseError databaseError) {}
};
areasRef.addListenerForSingleValueEvent(eventListener);
以同样的方式,您可以获得特定区域的所有Gallery
。