2014-11-06 353 views

回答

1

不幸的是,ButterKnife不支持此功能。您可以使用RecyclerView.OnItemTouchListener@OnClick和界面进行设置。

9

我的解决方案是在ViewHolder中使用@OnClick。这是唯一能够确定“列表项”的哪个元素已被点击的线索。

-1
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); 

      } 
+4

请详细说明使用的代码。 – Yatin 2016-07-08 07:48:14

+1

尽管**这个代码**可能回答这个问题,但最好包含文本的基本部分以供理解并提供参考代码。 **仅限代码**如果代码**变旧,答案可能会失效。 – Sufian 2016-07-08 14:21:37

1

@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 
    } 
}