13

正如onItemClick中不再存在的那样RecyclerViewButterKnife 是否仍然能够处理带有@onItemClick或带有@onClick注释的项目点击?

如果不是这样,有什么办法可以使用它吗?

4

4 回答 4

10

我的解决方案是@OnClick在 ViewHolder 内部使用。这是了解单击“列表项”的哪个元素的唯一方法。

于 2015-01-28T12:36:02.973 回答
8

@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
    }
}
于 2017-11-27T18:25:33.683 回答
1

不幸的是,ButterKnife 不支持此功能。你可以使用 RecyclerView.OnItemTouchListeneror@OnClick和 interface 做出一些东西。

于 2014-11-28T02:58:45.480 回答
0
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);

            }
于 2016-07-08T07:45:22.333 回答