目标很简单:通过FirebaseREcylcerAdapter显示“与添加到订阅的用户ID相关的所有活动记录”。
我现在有以下代码:
DatabaseReference mIdorecords=FirebaseDatabase.getInstance().getReference("users");
String muid=getUid();
final DatabaseReference dataRef=FirebaseDatabase.getInstance().getReference("userrecords");
Query keyData = mIdorecords.child(muid).child("subscriptions");
keyData.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
finalquery=dataRef.child(dataSnapshot.getKey()).orderByChild("status").equalTo("Active");
mAdapter = new FirebaseRecyclerAdapter<idorecord, PostViewHolder>(idorecord.class, R.layout.idolist_item,
PostViewHolder.class, finalquery)
如您所见,我发现如何获取“订阅”中指定的第一个特定用户的记录,但无法理解如何强制为“subcription”中指定的每个用户设置适配器... 请提出建议?
答案 0 :(得分:0)
您需要使用 ITERABLE 。在下面的示例中,我在列表中的设置中获取数据库中的所有用户对象。
List<User> list = new ArrayList<User>();
userReference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
Iterable<DataSnapshot> children = dataSnapshot.getChildren();
for(DataSnapshot child: children)
{
User user= child.getValue(User.class);
list.add(user);
//here are all user but you can change userReference.child("something")
//remenber of change User.class for type of you want. String.class, Long.class, etc
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
答案 1 :(得分:0)
DatabaseReference mIdorecords=FirebaseDatabase.getInstance().getReference("users");
String muid=getUid();
final DatabaseReference dataRef=FirebaseDatabase.getInstance().getReference("userrecords");
Query keyData = mIdorecords.child(muid).child("subscriptions");
keyData.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
finalquery=dataRef.child(dataSnapshot.getKey()).orderByChild("status").equalTo("Active");
finalquery.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
mAdapter.addItem(dataSnapshot.getValue(Record.class))
修改强>
我建议在第一个onChildAdded中使用singleValueEventListener以提高效率。