После удаления элемент все еще существует в виде корзины - PullRequest
0 голосов
/ 02 июня 2018

Это означает, что я не обновил свой адаптер или что?

@ Переопределить public void onDeleteClick (int position) {FoodInfo selectedItem;

    if(!searchView.getQuery().toString().isEmpty())
    {
        selectedItem = newlist.get(position);
    }
    else
    {
        selectedItem = mfoodinfo.get(position);
    }

    final String selectedKey = selectedItem.getFoodname();

    StorageReference imageRef = firebaseStorage.getReferenceFromUrl(selectedItem.getImageUrl());
    imageRef.delete().addOnSuccessListener(new OnSuccessListener<Void>() {
        @Override
        public void onSuccess(Void aVoid) {
            databaseReference.child(selectedKey).removeValue();
            foodAdapter.notifyDataSetChanged();
            Toast.makeText(Recycleview.this, "Item deleted", Toast.LENGTH_SHORT).show();

        }
    });

}

Адаптер питания

@Override
public int getItemCount() {
    return mfoodinfo.size();
}

public void setFilter(List<FoodInfo> newlist) {

    mfoodinfo = new ArrayList<>();
    mfoodinfo.addAll(newlist);
    notifyDataSetChanged();
}

     @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) {
        menu.setHeaderTitle("Select Action");
        MenuItem delete = menu.add(Menu.NONE, 1, 1, "Delete");
        MenuItem update = menu.add(Menu.NONE, 2, 2, "Update ");


        update.setOnMenuItemClickListener(this);
        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;
                    case 2:
                        mListener.UpdateFood(position);
                        return true;

                }
            }
        }
        return false;
    }

}

public interface OnItemClickListener {
    void onItemClick(int position);

    void onDeleteClick(int position);

    void UpdateFood(int position);


}

public void setOnItemClickListener(OnItemClickListener listener) {
    mListener = listener;
}

}

, который является моим удалениемметод после того, как я удаляю элемент, который все еще существует в моем представлении корзины, перешел в базу FireBase

Я должен покинуть эту страницу и получить доступ снова, тогда он показывает только тот же элемент с базой FireBase

Любая помощь

1 Ответ

0 голосов
/ 02 июня 2018

Вы удаляете его только из базы данных, а не из адаптера.

databaseReference.child(selectedKey).removeValue();
foodAdapter.remove(item); // this is what you need 
foodAdapter.notifyDataSetChanged();

Поэтому у вас должен быть метод удаления в адаптере.

ОБНОВЛЕНИЕ

Этот метод удаления необходим для адаптера:

 private void remove(int position) {
    itemList.remove(position);
    notifyItemRemoved(position);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...