Я делаю проект в базе данных Firebase и хотел удалить родителя из базы данных Firebase в представлении переработчика.Вот как это выглядит из моей базы данных База данных Я хочу удалить этот ключ со стрелкой.
Проблема: - Код не удаляет родительский ключ визображение.Я хочу удалить ключ со стрелкой.
Это мой код для держателя просмотра
public class ViewHolder1 extends RecyclerView.Adapter<ViewHolder1.ImageViewHolder> {
private Context mContext1;
private List<Model1> mModel1;
private ImageAdapter.OnItemClickListener mListener;
public ViewHolder1(Context context1, List<Model1> models1) {
mContext1 = context1;
mModel1 = models1;
}
@NonNull
@Override
public ImageViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
View v = LayoutInflater.from(mContext1).inflate(R.layout.row1, viewGroup, false);
return new ImageViewHolder(v);
}
@Override
public void onBindViewHolder(@NonNull ImageViewHolder imageViewHolder, int i) {
final Model1 mModelcur = mModel1.get(i);
imageViewHolder.img_food.setText(mModelcur.getFood());
imageViewHolder.img_order.setText(mModelcur.getOrder());
imageViewHolder.img_cost.setText(mModelcur.getPrice());
}
@Override
public int getItemCount() {
return mModel1.size();
}
public class ImageViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener
, View.OnCreateContextMenuListener, MenuItem.OnMenuItemClickListener{
public TextView img_food;
public TextView img_order;
public TextView img_cost;
public ImageViewHolder(@NonNull View itemView) {
super(itemView);
img_food = itemView.findViewById(R.id.Foody);
img_order = itemView.findViewById(R.id.Ordery);
img_cost = itemView.findViewById(R.id.Costy);
itemView.setOnClickListener(this);
itemView.setOnCreateContextMenuListener(this);
}
@Override
public void onClick(View v) {
if(mListener != null)
{
int position = getAdapterPosition();
if(position != RecyclerView.NO_POSITION)
{
mListener.onItemClick(position);
}
}
}
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
MenuItem delete = menu.add(Menu.NONE, 1,1,"Delete");
delete.setOnMenuItemClickListener(this);
}
@Override
public boolean onMenuItemClick(MenuItem item) {
if(mListener != null)
{
int position = getAdapterPosition();
if(position != RecyclerView.NO_POSITION)
{
switch(item.getItemId())
{
case 1:
mListener.onDeleteClick(position);
return true;
}
}
}
return false;
}
}
public interface OnItemClickListener
{
void onItemClick(int position);
void onDeleteClick1(int position);
}
public void setOnItemClickListener(ImageAdapter.OnItemClickListener listener)
{
mListener = listener;
}
}
и это для моей основной активности
mDatabaseReference2= FirebaseDatabase.getInstance().getReference("User");
mDatabaseReference2.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
for(final DataSnapshot postSnapshot:dataSnapshot.getChildren())
{
final String myParentNode = postSnapshot.getKey();
mDatabaseReference = FirebaseDatabase.getInstance().getReference();
mDatabaseReference.orderByKey().equalTo(myParentNode).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
for(DataSnapshot posts: dataSnapshot.getChildren())
{
final String key = posts.getKey();
if(key.equals(myParentNode))
{
mDatabaseReference1 = FirebaseDatabase.getInstance().getReference(key).child("Ordered");
mDatabaseReference1.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
for (DataSnapshot postSnapshot : dataSnapshot.getChildren()) {
Model1 model2=postSnapshot.getValue(Model1.class);
mModel2.add(model2);
}
mAdapter2.notifyDataSetChanged();
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
@Override
public void onItemClick(int position) {
}
@Override
public void onDeleteClick1(int position) {
Model1 selectedItem = mModel2.get(position);
String selectedKey = selectedItem.getFood();
mDatabaseReference2= FirebaseDatabase.getInstance().getReference("User");
mDatabaseReference2.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
for(final DataSnapshot postSnapshot:dataSnapshot.getChildren())
{
String myKey = postSnapshot.getKey();
mDatabaseReference = FirebaseDatabase.getInstance().getReference();
mDatabaseReference.orderByKey().equalTo(myKey).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
for(DataSnapshot posts: dataSnapshot.getChildren())
{
String myKey = posts.getKey();
FirebaseDatabase.getInstance().getReference().child(myKey).child("Ordered").removeValue()
.addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()) {
Log.d("Delete", "Notification has been deleted");
} else {
Log.d("Delete", "Notification couldn't be deleted");
}
}
});
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
@Override
protected void onDestroy()
{
super.onDestroy();
mDatabaseReference1.removeEventListener(mDBListener);
}
Обновление Может кто-нибудь помочь мне, пожалуйста?Сбой кода после того, как я нажал кнопку возврата.Мне действительно нужна помощь, пожалуйста.Я не могу удалить ключ или ребенка в адаптере утилизатора.