RecyclerView onClickListener

196
10 декабря 2019, 16:00

Можно ли в RecyclerView прослушать нажатия и как это сделать , если образец layout повторяется несколько раз.

Answer 1

Вы можете создать свой интерфейс например:

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();
    }
}));
READ ALSO
Добавление приложение в избранное Huawei Xioami

Добавление приложение в избранное Huawei Xioami

Можно ли на Huawei и Xioami программно добавить приложение в избранное?

148
Принцип работы компилятора javac [закрыт]

Принцип работы компилятора javac [закрыт]

Want to improve this question? Update the question so it focuses on one problem only by editing this post

155
Java не работает try catch из-за scanner [закрыт]

Java не работает try catch из-за scanner [закрыт]

Want to improve this question? Update the question so it's on-topic for Stack Overflow на русском

119
WebResourceResponse

WebResourceResponse

не подскажите как в функции getWebResourceResponse получить доступ к POST Данным?

151