Можно ли в RecyclerView прослушать нажатия и как это сделать , если образец layout повторяется несколько раз.
Asked
Active
Viewed 83 times
0
-
можно. что у вас не получается? – michael_best Mar 20 '19 at 17:52
-
@michael_best я просто не знаю как это сделать реализовать – danchik202020 Mar 20 '19 at 18:33
-
Как вариант вот тут есть примеры. – MikeL Mar 20 '19 at 20:29
-
https://ru.stackoverflow.com/a/423291/177345 – pavlofff Mar 20 '19 at 23:10
-
Вот здесь есть прекрасное описание как это сделать православно. https://antonioleiva.com/recyclerview-listener/ – Sergei Buvaka Mar 22 '19 at 12:01
-
@СергейБувака там по-протестански ) – Alexander Chernin Mar 22 '19 at 13:52
-
@Alexander Chernin. Ну для андроид разработчика надо знать английский хотя бы на техническом уровне. На худой конец и Гугл переводчик сгодится. Ну и там по коду можно понять что делать. – Sergei Buvaka Mar 23 '19 at 08:12
1 Answers
0
Вы можете создать свой интерфейс например:
public interface OnItemClickListener {
void onItemClick(ContentItem item);
}
Конструктор получит объект, который реализует этот интерфейс, вместе с элементами, которые будут отображаться:
private final List<ContentItem> items;
private final OnItemClickListener listener;
public ContentAdapter(List<ContentItem> items, OnItemClickListener listener) {
this.items = items;
this.listener = listener;
}
В качестве альтернативы вы можете создать setOnItemClickListener метод и назначить его таким образом. Теперь, в получите конструктора в пользовательском методе:onBindViewHolder
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
holder.bind(items.get(position), listener);
}
Вот так выглядит bind метод
public void bind(final ContentItem item, final OnItemClickListener listener) {
...
itemView.setOnClickListener(new View.OnClickListener() {
@Override public void onClick(View v) {
listener.onItemClick(item);
}
});
}
Используйте его всякий раз, когда вам это нужно, создав новый адаптер и прослушиватель, который будет реализовывать поведение при нажатии на элемент. Простой пример:
recycler.setAdapter(new ContentAdapter(items, new ContentAdapter.OnItemClickListener() {
@Override public void onItemClick(ContentItem item) {
Toast.makeText(getContext(), "Item Clicked", Toast.LENGTH_LONG).show();
}
}));