2014-11-06 24 views
11

Như onItemClick không còn trong RecyclerView, không ButterKnife vẫn có thể xử lý các mục của nó nhấp chuột với @onItemClick hoặc với @onClick chú thích?Làm thế nào để sử dụng ButterKnife OnItemClick với RecyclerView?

Nếu không, mọi công việc xung quanh để sử dụng?

+0

Có thể minh họa một chút về điều này, bạn làm cách nào để có được vị trí của ô được nhấp? – aprofromindia

+0

Bạn có thể hiển thị thêm dữ liệu hoặc mã để hiểu những gì bạn cần – IgniteCoders

Trả lời

1

Thật không may ButterKnife không hỗ trợ tính năng này. Bạn có thể làm một cái gì đó bằng cách sử dụng RecyclerView.OnItemTouchListener hoặc @OnClick và giao diện.

9

Giải pháp của tôi là sử dụng @OnClick bên trong ViewHolder. Đây là cách duy nhất để có một đầu mối về yếu tố nào của "mục danh sách" đã được nhấp.

-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

Vui lòng giải thích mã được sử dụng chi tiết. – Yatin

+1

Trong khi ** mã này ** có thể trả lời câu hỏi, thì tốt hơn nên bao gồm phần cơ bản của văn bản để hiểu và cung cấp mã để tham khảo. ** Các câu trả lời chỉ có mã ** có thể trở thành không hợp lệ nếu ** mã ** trở thành cũ. – Sufian

1

@OnClick tác phẩm chú thích, sử dụng như sau trong lớp ViewHolder của bạn.

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 
    } 
} 
Các vấn đề liên quan