Снэк-бар из пользовательского класса не отображается - PullRequest
0 голосов
/ 23 июня 2018

MyActivityordin.xml:

<CoordinatorLayout>
   id:coordID
   <RelativeL>
      ...
   <FAB>

RVAdapter.java

...
@Override
    public void onItemDismiss(int position) {
        ...
        notifyItemRemoved(position);

        LayoutInflater inflater = (LayoutInflater) MyActivity.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        View v = inflater.inflate(R.layout.coord, null);

        Snackbar.make(v.findViewById(R.id.coordID), "TEXT", Snackbar.LENGTH_LONG).show();
    }

Это метод смахивания для удаления элемента из списка представления переработчика в пользовательском классе (RVAdapter.java), а после его удаления должна появиться панель Snackbar и установить действие для UNDO. Но когда я удаляю элемент, ничего не происходит. Снэк-бар не появляется. Я не уверен, правильно ли я установил вид, но я не знаю, как это сделать по-другому

Ответы [ 2 ]

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

Спасибо Майку М. Я решил это так:
В MyActivity добавлено

private static CoordinatorLayout mCoord;
mCoord = findViewById(R.id.coordID);
public static View getCoord() { return mCoord; }

и в RVAdapter.java

Snackbar.make(MyActivity.getCoord(), ...
0 голосов
/ 23 июня 2018

По моему мнению, есть две возможные причины не показывать снэк-бар.

  1. Высота других видов слишком велика для того, чтобы снэк-бар отображался.Проверьте высоту всех представлений в действии.
  2. Ссылка на ваше действие, которое вы предоставляете в качестве параметра view Snackbar.make (), может быть неправильной.Если это так, то я предлагаю вам передать ссылку на Adapter через конструктор, а затем сохранить ее следующим образом.

    public class MoviesAdapter extends RecyclerView.Adapter<MyViewHolder> {
    
        private List<Movie> moviesList;
        private MainActivity activity;
    
        MoviesAdapter(MainActivity activity){
            super();
            this.activity = activity;
        }
    
        //continue your remaining work from here
    
    }
    

Я хотел бы прокомментировать и спроситьдля более подробной информации, но из-за моей низкой репутации мне не разрешили это сделать.Надеюсь, что эти предложения работают для вас.

...