【发布时间】:2016-10-05 19:13:25
【问题描述】:
我将 Firebase 与 RecyclerView 一起使用,我想检索具有特定位置的子项以将其删除。我知道我应该使用orderBy 的查询,但是我需要通过它的位置来获取一个特定的孩子。
有没有办法做到这一点?我只找到了一种通过快照的getChildrenCount() 方法获取孩子数量的方法,但没有通过传递位置值找到任何东西。
谢谢。
protected void populateViewHolder(final ReportViewHolder viewHolder, final Report report, int position) {
viewHolder.txtTitle.setText(report.title);
viewHolder.txtMessage.setText(report.message);
viewHolder.txtDate.setText(report.date);
viewHolder.txtuserName.setText(report.userName);
viewHolder.btnDelete.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String key = report.key;
Query myTopPostsQuery = mDatabaseReference.child("user-reports/"+userID).orderByKey().equalTo(report.key);
myTopPostsQuery.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot snapshot : dataSnapshot.getChildren()) {
snapshot.getRef().removeValue();
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
mDatabaseReference.child("reports/"+ key).removeValue();
}
});
}
};
我想使用populateViewHolder的位置,来获取子位置,然后删除它的节点。
现在我为报告添加了一个名为 key 的字段,并使用orderByKey().equalTo(report.key); 将其删除。
【问题讨论】:
-
adapter.getRef(position)将为您提供特定位置的项目的 DatabaseReference。如果您在使用它时遇到问题,请分享minimal code that reproduces your problem。
标签: android firebase firebase-realtime-database