2015-12-04 48 views

回答

1

這很容易做到:

裏面你ViewHolder類:

. 
. 
... 
    public class ViewHolder extends RecyclerView.ViewHolder { 
     ImageView cardimage; 
     TextView cardtitle; 
     Flower Flower; 
     public ViewHolder(View itemView) { 
      super(itemView); 
      cardimage = (ImageView) itemView.findViewById(R.id.cardimage); 
      cardtitle = (TextView) itemView.findViewById(R.id.cardtitle); 
     } 
    } 

放入構造,(超後(...)調用):

itemView.setOnClickListener(new CardOnClickListener()); 

並創建這個類,你在任何地方你w螞蟻它

class CardOnClickListener implements View.OnClickListener { 
    @Override 
    public void onClick(View v) { 
     // TODO Handle item click 
     Log.e("Clicked !!!"); 
    } 
} 

我以前讀過有更好的方法,但我喜歡這種方式很容易,而不是複雜。

0

你可以讓自己的類與聽衆

import android.content.Context; 
import android.support.v7.widget.RecyclerView; 
import android.view.GestureDetector; 
import android.view.MotionEvent; 
import android.view.View; 

public class RecyclerItemClickListener implements RecyclerView.OnItemTouchListener { 

    private OnItemClickListener mListener; 
    private GestureDetector mGestureDetector; 

    public RecyclerItemClickListener(Context context, final RecyclerView recyclerView, OnItemClickListener listener) { 
     mListener = listener; 

     mGestureDetector = new GestureDetector(context, new GestureDetector.SimpleOnGestureListener() { 
      @Override 
      public boolean onSingleTapUp(MotionEvent e) { 
       return true; 
      } 

      @Override 
      public void onLongPress(MotionEvent e) { 
       View childView = recyclerView.findChildViewUnder(e.getX(), e.getY()); 

       if (childView != null && mListener != null) { 
        mListener.onItemLongClick(childView, recyclerView.getChildAdapterPosition(childView)); 
       } 
      } 
     }); 
    } 

    @Override 
    public boolean onInterceptTouchEvent(RecyclerView rv, MotionEvent e) { 
     View childView = rv.findChildViewUnder(e.getX(), e.getY()); 

     if (childView != null && mListener != null && mGestureDetector.onTouchEvent(e)) { 
      mListener.onItemClick(childView, rv.getChildAdapterPosition(childView)); 
     } 

     return false; 
    } 

    @Override 
    public void onTouchEvent(RecyclerView rv, MotionEvent e) { 

    } 

    @Override 
    public void onRequestDisallowInterceptTouchEvent(boolean disallowIntercept) { 

    } 

    public static interface OnItemClickListener { 
     public void onItemClick(View view, int position); 

     public void onItemLongClick(View view, int position); 
    } 

} 

,然後在你的循環圖:

mRecyclerView.addOnItemTouchListener(new RecyclerItemClickListener(getContext(), mRecyclerView, new RecyclerItemClickListener.OnItemClickListener() { 
    @Override 
    public void onItemClick(View view, int position) { 
     // click 
    } 

    @Override 
    public void onItemLongClick(View view, int position) { 
     // long click 
    } 
})); 

@Abhinav普里答案是正確的,但我寫你想萬一這個解決方案並長按一下。

相關問題