У меня есть адаптер, который заполняет RecyclerView
. Прочитав форумы понял что обработчик нажатий необходимо сделать тоже в адаптере. Как открыть фрагмент по нажатию на элемент RecyclerView
?
FragmentTransaction fragmentTransaction = getFragmentManager().beginTransaction();
Вот это не работает, пишет cannot resolve method getFragmentManager()
.
Вот это не работает, пишет cannot resolve method getFragmentManager()
.
И правильно пишет, так как в классе адаптера (и его суперклассе) нет подобного метода.
Можно пробросить нажатие на пункт списка в активити, а уже оттуда делать то, что Вы хотите.
Объявляете интерфейс:
public interface OnRecyclerViewItemClickListener {
void onClick();
}
Реализуете этот интерфейс в классе активити:
public class MainActivity extends AppCompatActivity implements OnRecyclerViewItemClickListener {
...
@Override
public void onClick() {
}
}
В адаптере добавляете поле:
private OnRecyclerViewItemClickListener mClickListener;
При создании адаптера устанавливаете обработчик нажатия:
public MyAwesomeAdapter(OnRecyclerViewItemClickListener clickListener) {
mClickListener = clickListener;
}
При клике на айтем, в адаптере вызываете коллбэк:
if (mClickListener != null) {
mClickListener.onClick();
}
PS. Разумеется, в метод onClick()
можно добавить необходимые параметры.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Добрый день! Помогите разобратьсяЕсть два класса: Tree и List
Имеется большой отсортированный массив строк (100000 строк, каждая строка может иметь длину в 32 символа (латинские буквы и цифры))Вводим начало...
Рассмотрим сценарий когда пользователь хочет обновить данные на двух базах , которые расположены на других узлах сетиДля этого он использует...
У меня задача организовать вывод в консоль объектов при добавлении в базу: