如何在RecyclerView中删除项目,并在Firebase中删除数据



我想删除RecyclerView中的一个项目,当我单击删除按钮时,它也会删除其他项目。

这是我的火球结构

DB结构

我想删除我的firebase中的每个项目或按键,但如果我点击一个1项目,代码中会发生什么,它也会删除其他项目。

这是我的代码

List<FetchRheinSubject> fetchDataList = new ArrayList<>();
@Override
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
ViewHolderClass viewHolderClass=(ViewHolderClass)holder;
FetchRheinSubject fetchData = fetchDataList.get(position);
viewHolderClass.subjectName.setText(fetchData.getSubjectName());
viewHolderClass.day.setText(fetchData.getDay());
viewHolderClass.time.setText(fetchData.getTime());
}
@Override
public int getItemCount() {
return fetchDataList.size();
}

public class ViewHolderClass extends RecyclerView.ViewHolder {

TextView subjectName, day, time , subCounter;
ImageView delete;

public ViewHolderClass(@NonNull final View itemView) {
super(itemView);
subjectName=itemView.findViewById(R.id.subjectName);
day=itemView.findViewById(R.id.day);
time=itemView.findViewById(R.id.time);
delete = itemView.findViewById(R.id.deleteIcon);
subCounter = itemView.findViewById(R.id.subCounter);
final DatabaseReference databaseReference = FirebaseDatabase.getInstance().getReference().getRoot().child("rhein_subject");

delete.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
databaseReference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
if (dataSnapshot.hasChildren()) {
DataSnapshot firstChild = dataSnapshot.getChildren().iterator().next();
firstChild.getRef().removeValue();
}
}

@Override
public void onCancelled(@NonNull DatabaseError databaseError) {

}
});
}
});

要删除Firebase实时数据库中的一个项,而不是尝试删除addValueEventChangeListener中的一项,请尝试调用removeValue((;在代码中。

所以,代码应该看起来像

delete.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
dataReference.getChild(clickedKey).removeValue
}
});

AddValueEventListener中的OnDataChange((将仅在更新Firebase实时数据库时调用。在这种情况下,您试图在实时数据库中进行更改,这在这里不是正确的概念。

AddValueEventListener和OnDataChange((函数请参阅本文档。

相关内容

最新更新