【发布时间】:2017-11-06 11:49:07
【问题描述】:
我有这个数据库:
在活动 A 中,我单击一个类 (listitem),然后将该类的 id 传递给该活动,如下所示:-
so = getIntent().getStringExtra("send_id");
所以现在我在 so 内的这个活动中拥有 ClassId。然后我运行这个查询:
myref= FirebaseDatabase.getInstance().getReference().child("ClassStudent");
Query fk=myref.orderByChild("ClassId").equalTo(so);
fk.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
student=dataSnapshot.child("Studentid").getValue().toString();
//a breakpoint here gives student=oyvEbB0128Y90ADzXnL0UwCUy0Z2
}
@Override
public void onChildChanged(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onChildRemoved(DataSnapshot dataSnapshot) {
}
@Override
public void onChildMoved(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
}
所以在查询中,我想要所有具有该 classid orderByChild("ClassId").equalTo(so) 的学生 ID
然后我创建一个FirebaseRecycleradapter
FirebaseRecyclerAdapter<Info,ViewHolder> recyclerAdapter=new FirebaseRecyclerAdapter<Info,ViewHolder>(Info.class, R.layout.row, ViewHolder.class, fk) {
@Override
protected void populateViewHolder(final ViewHolder holder, Info model, int position) {
holder.title.setText(student); //a breakpoint here gives student = 7AnhQ7pRwhXDRqytjSUkoJrOB253
}
}
现在数据(在手机屏幕上)显示如下:
结果
7AnhQ7pRwhXDRqytjSUkoJrOB253
7AnhQ7pRwhXDRqytjSUkoJrOB253
上面的学生证出现了两次,应该是:
应该是
7AnhQ7pRwhXDRqytjSUkoJrOB253
oyvEbB0128Y90ADzXnL0UwCUy0Z2
因为这两个学生都在那个班级。
我也覆盖了getItemId 和getItemViewType
【问题讨论】:
-
你试过没有“等于”的查询吗?
-
@TheDude 是的,我检索到了这个
7AnhQ7pRwhXDRqytjSUkoJrOB2532 次,它没有得到另一个嗯。问题出在 populateviewholder 和查询之间 -
可能是您的“学生”变量覆盖现有数据。
标签: java android firebase firebase-realtime-database