RecyclerView 클릭 이벤트의 두 가지 방법
1. 인터페이스를 통해 리셋하는 방식:
직접 코드에 주석을 달다.
import android.view.View;
//
public interface OnItemClickListener{
void onItemClick(View view, int position);
}
2、recyclerview의adapter에서 클릭 방법 실현
public class CardAdapter extends RecyclerView.Adapter {
public OnItemClickListener mOnItemClickListener;//
public void setOnItemClickListener(OnItemClickListener onItemClickListener ){
mOnItemClickListener=onItemClickListener;
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext())
.inflate(R.layout.fragment_card, parent, false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(final ViewHolder holder, final int position) {
holder.mItem = mValues.get(position);
holder.mTimeView.setText(mValues.get(position).time);
holder.mView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (null != mListener) {
// Notify the active callbacks interface (the activity, if the
// fragment is attached to one) that an item has been selected.
mListener.onListFragmentInteraction(holder.mItem);
}
}
});
if (mOnItemClickListener != null) {
holder.mView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int position = holder.getLayoutPosition();
mOnItemClickListener.onItemClick(holder.mView,position);
}
});
}
}
@Override
public int getItemCount() {
return mValues.size();
}
public class ViewHolder extends RecyclerView.ViewHolder {
public final View mView;
public final TextView mTimeView;
public DummyItem mItem;
public ViewHolder(View view) {
super(view);
mView = view;
mTimeView = (TextView) view.findViewById(R.id.certLibFileTime);
}
}
}
3、activity에서 사용
CardAdapter cardAdapter = new CardAdapter(CardDummyContent.ITEMS, mListener,context);
cardAdapter.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(View view, int position) {
String fileName = CardDummyContent.ITEMS.get(position).time;
Log.i(TAG,"cardName:"+fileName);
}
});
2, recyclerview의addOnItemTouchListener를 통해 클릭 이벤트 구현
1. 우선 클래스RecyclerItemClickListener를 정의하여RecyclerView를 실현한다.OnItem Touch Listener 인터페이스, onLong Press () 방법을 다시 쓰는 방법, onIntercept Touch Event () 방법, onTouch Event () 방법, onRequest Disallow Intercept Touch Event () 방법을 이 클래스 내부에 클릭해서 감청하는 인터페이스interface OnItem Click Listener를 정의하고 인터페이스 내부에 두 가지 방법인 onItem Click (), onLong Click () 을 설정합니다.
public static class RecyclerItemClickListener implements RecyclerView.OnItemTouchListener {
GestureDetector mGestureDetector;
private View childView;
private RecyclerView touchView;
public RecyclerItemClickListener(Context context, final HomePageFragment.RecyclerItemClickListener.OnItemClickListener mListener) {
mGestureDetector = new GestureDetector(context, new GestureDetector.SimpleOnGestureListener() {
@Override
public boolean onSingleTapUp(MotionEvent ev) {
if (childView != null && mListener != null) {
mListener.onItemClick(childView, touchView.getChildPosition(childView));
}
return true;
}
@Override
public void onLongPress(MotionEvent ev) {
if (childView != null && mListener != null) {
mListener.onLongClick(childView, touchView.getChildPosition(childView));
}
}
});
}
public interface OnItemClickListener {
void onItemClick(View view, int position);
void onLongClick(View view, int posotion);
}
@Override
public boolean onInterceptTouchEvent(RecyclerView rv, MotionEvent e) {
mGestureDetector.onTouchEvent(e);
childView = rv.findChildViewUnder(e.getX(), e.getY());
touchView = rv;
return false;
}
@Override
public void onTouchEvent(RecyclerView rv, MotionEvent e) {
}
@Override
public void onRequestDisallowInterceptTouchEvent(boolean disallowIntercept) {
}
}
2. 우리의 레이아웃에 정의된recyclerview 추가 방법addOnItemTouchListener()
rc_view.addOnItemTouchListener(new RecyclerItemClickListener(this,new RecyclerItemClickListener.OnItemClickListener() {
public void onItemClick(View view, int position) {
//
}
@Override
public void onLongClick(View view, int position) {
//
// Toast.makeText(getContext(), " ", Toast.LENGTH_SHORT).show();
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
VisualStudio에서 Ant를 사용하여 Native APK를 만듭니다.※2019/11/13 Gradle판의 기사도 올랐습니다. 자세한 내용은 을 참조하십시오. CEDEC2019의 " "이라는 세션에서 VisualStudio에서도 Gradle을 사용한 Native 앱을 만들 수 있다는 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.