Как открыть фрагмент из адаптера RecyclerView?

415
19 мая 2017, 14:17

У меня есть адаптер, который заполняет RecyclerView. Прочитав форумы понял что обработчик нажатий необходимо сделать тоже в адаптере. Как открыть фрагмент по нажатию на элемент RecyclerView?

FragmentTransaction fragmentTransaction = getFragmentManager().beginTransaction();

Вот это не работает, пишет cannot resolve method getFragmentManager().

Answer 1

Вот это не работает, пишет cannot resolve method getFragmentManager().

И правильно пишет, так как в классе адаптера (и его суперклассе) нет подобного метода.

Можно пробросить нажатие на пункт списка в активити, а уже оттуда делать то, что Вы хотите.

  1. Объявляете интерфейс:

    public interface OnRecyclerViewItemClickListener {
        void onClick();
    }
  2. Реализуете этот интерфейс в классе активити:

    public class MainActivity extends AppCompatActivity implements OnRecyclerViewItemClickListener {
        ...
        @Override
        public void onClick() {
        }
    }
  3. В адаптере добавляете поле:

    private OnRecyclerViewItemClickListener mClickListener;
  4. При создании адаптера устанавливаете обработчик нажатия:

    public MyAwesomeAdapter(OnRecyclerViewItemClickListener clickListener) {
        mClickListener = clickListener;
    }
  5. При клике на айтем, в адаптере вызываете коллбэк:

    if (mClickListener != null) {
        mClickListener.onClick();
    }

PS. Разумеется, в метод onClick() можно добавить необходимые параметры.

READ ALSO
Добавление записей в JList из метода другого класса

Добавление записей в JList из метода другого класса

Добрый день! Помогите разобратьсяЕсть два класса: Tree и List

205
Поиск строк в большом массиве по префиксу

Поиск строк в большом массиве по префиксу

Имеется большой отсортированный массив строк (100000 строк, каждая строка может иметь длину в 32 символа (латинские буквы и цифры))Вводим начало...

245
каков механизм работы xa транзакции?

каков механизм работы xa транзакции?

Рассмотрим сценарий когда пользователь хочет обновить данные на двух базах , которые расположены на других узлах сетиДля этого он использует...

265
Log4j не видит properties файл

Log4j не видит properties файл

У меня задача организовать вывод в консоль объектов при добавлении в базу:

503