这是我的数据库结构:
这是我的代码:
mDatabase.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
getTasks(dataSnapshot);
mTasksRecyclerView.setVisibility(View.VISIBLE);
mProgressBar.setVisibility(View.INVISIBLE);
}
.
.
.
//populate recyclerview with data from firebase
private void getTasks(DataSnapshot dataSnapshot) {
for (DataSnapshot singleSnapshot : dataSnapshot.getChildren()) {
mTasks.add(singleSnapshot.getValue(Task.class));
}
Collections.sort(mTasks);
mAdapter = new TaskAdapter(mTasks, getContext());
mTasksRecyclerView.setAdapter(mAdapter);
问题是此代码检索数据库,任务和用户中的所有内容,并以某种方式将用户对象添加到我的任务arraylist,并导致空白项目显示在我的recyclerview中。我可以使用哪些代码来仅检索数据库的“任务”部分中的项目?
我知道发生了这种情况,因为datasnapshot.getChildren正在返回数据库中的所有内容。我以为使用datasnapshot.child(“任务”)会起作用,但事实并非如此。
答案 0 :(得分:1)
datasnapshot.child("Tasks")
不起作用,您需要在数据库引用中引用Tasks表,然后将childEventListener添加到它。试试这个。
DatabaseReference ref = mDatabase.child("Tasks");
ref.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
getTasks(dataSnapshot);
mTasksRecyclerView.setVisibility(View.VISIBLE);
mProgressBar.setVisibility(View.INVISIBLE);
}
希望这有帮助
答案 1 :(得分:0)
关键是在数据引用中设置路径。你需要这样做:
DatabaseReference db = mDatabase.child("Tasks").child("YourTask");
db.addChildEventListener(new ChildEventListener(){
@Override
public void onChildAdded...
@Override
public void onChildRemoved...
@Override
public void onChildUpdated...