我發現本教程與cardview recyclerview,但我無法添加onitemclick監聽器..我想單擊項目並轉到其他活動。請幫幫我。將受到高度讚賞。 謝謝單擊列表視圖後打開新的活動回收視圖
http://pulse7.net/android/how-to-use-recyclerview-with-cardview-in-android-application/
我發現本教程與cardview recyclerview,但我無法添加onitemclick監聽器..我想單擊項目並轉到其他活動。請幫幫我。將受到高度讚賞。 謝謝單擊列表視圖後打開新的活動回收視圖
http://pulse7.net/android/how-to-use-recyclerview-with-cardview-in-android-application/
這很容易做到:
裏面你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 !!!");
}
}
我以前讀過有更好的方法,但我喜歡這種方式很容易,而不是複雜。
你可以讓自己的類與聽衆
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普里答案是正確的,但我寫你想萬一這個解決方案並長按一下。
請提供關於您已經嘗試的信息(如代碼段)。 –