Как использовать ButterKnife OnItemClick с RecyclerView?

Поскольку onItemClick больше не находится в RecyclerView, ButterKnife все еще способен обрабатывать клики с элементами @onItemClick или с помощью @onClick аннотаций?

Если это не так, любая работа вокруг этого?

Ответ 1

Мое решение - использовать @OnClick внутри ViewHolder. Это единственный способ узнать, какой элемент элемента списка был нажат.

Ответ 2

К сожалению, ButterKnife не поддерживает эту функцию. Вы можете сделать что-то с помощью RecyclerView.OnItemTouchListener или @OnClick и интерфейса.

Ответ 3

@OnClick Работа с аннотациями, используйте, как показано ниже, в классе ViewHolder.

class ViewHolder extends RecyclerView.ViewHolder {

    @BindView(R.id.title)
    TextView title;

    ViewHolder(View itemView) {
        super(itemView);
        ButterKnife.bind(this, itemView);
    }

    @OnClick
    void onClick(View view) {
        System.out.println(getAdapterPosition()); //clicked item position
    }
}

Ответ 4

public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener
          @Override
            public void onClick(View view) {

                int data = getAdapterPosition();
/*
             Intent in = new Intent(getContext(),NextActivity.class);
               in.putExtra("data",mTextView.getText().toString());
             startActivity(in);
*/
//                Flower current = ls.get(position);
## Heading ##

                int itemPosition = recycelr.getChildLayoutPosition(view);
                Flower item = fl_List.get(itemPosition);

                Intent in = new Intent(getContext(),NextActivity.class);
                in.putExtra("id",0);
                in.putExtra("data",item.getName());
                startActivity(in);

            }