Как добавить Snackbar, где View Class не доступен напрямую - PullRequest
0 голосов
/ 30 апреля 2020

Я столкнулся с проблемой при добавлении Snackbar в мой код. На самом деле я хочу показать Snackbar в ItemTouchHelper объект. Я использую ItemTouchHelper для удаления элементов на swipe, а затем показываю Snackbar, что элемент removed. Как добавить Snakbar, где у меня нет доступа к объекту View.

final ItemTouchHelper itemTouchHelper = new ItemTouchHelper(new ItemTouchHelper.SimpleCallback(0,ItemTouchHelper.LEFT|ItemTouchHelper.RIGHT) {
            @Override
            public boolean onMove(@NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder, @NonNull RecyclerView.ViewHolder target) {
                return false;
            }

            @Override
            public void onSwiped(@NonNull RecyclerView.ViewHolder viewHolder, int direction) {

                    //here I want to add a Snackbar but i don't have access to View object

                    int currentPosition = viewHolder.getAdapterPosition();
                    Item item = itemList.get(currentPosition);
                    int id = item.getId();
                    databseHandler.deleteItem(id);
                    itemList.remove(viewHolder.getAdapterPosition());
                    recyclerViewAdapters.notifyItemRemoved(viewHolder.getAdapterPosition());

            }
        });
        itemTouchHelper.attachToRecyclerView(recyclerView);

1 Ответ

1 голос
/ 30 апреля 2020

Что вы подразумеваете под этим утверждением?

первый параметр (View) Snakbar недоступен

Вы можете вызвать метод, который показывает ваш Snackbar оттуда и используйте root представление вашего макета Activity в качестве аргумента для Snackbar.

private void showSnackbar(String message) {
  View rootView = findViewById(android.R.id.content);
  if(rootView != null) {
    Snackbar.make(rootView, message, Snackbar.LENGTH_SHOW).show(); 
  }
}

Вы можете позвонить по вашему обратному вызову:

@Override
public void onSwiped(@NonNull RecyclerView.ViewHolder viewHolder, int direction) {

  //here I want to add a Snackbar but first parameter(View) of Snakbar is not available
   showSnackbar("Your message");

   ...
}
...