Android XRecyclerView 가장 간단 한 아 이 템 클릭 이벤트 처리
4322 단어 AndroidXRecyclerViewitem클릭 이벤트
하지만 addHeaderView 라 는 말 은 RecyclerView 가 실현 되 지 않 았 기 때문에 저 는 XRecyclerView 를 사 용 했 습 니 다.사실은 RecyclerView 를 바탕 으로 다시 봉 인 했 기 때문에 사용 하기에 좋 습 니 다.
XRecyclerView 를 정확하게 사용 하여 아 이 템 을 클릭 하여 이벤트 처 리 를 하 는 문 제 를 말씀 드 리 겠 습 니 다.사실은 RecyclerView.View Holder 에 있 는 아 이 템 을 클릭 하 는 것 입 니 다.그러면 문 제 는 어떻게 간단하게 사용 하 느 냐 하 는 것 입 니 다.
일반적으로 우 리 는 아 이 템 레이아웃 의 맨 바깥쪽 에 id="@+id/..."를 직접 설정 하고 onBindView Holder 에서 holder.**.setOnClickListener()로 사건 처 리 를 합 니 다.이렇게 하 는 지 아 닌 지 보 세 요.이렇게 하면 계속 내 려 다 보고 간단 한 것 을 가르쳐 드 립 니 다.
아 이 템 클릭 이벤트 간단하게 사용 하기
1.먼저 RecyclerView.View Holder 소스 코드 가 어떻게 쓰 여 있 는 지 살 펴 봅 니 다.
/**
* A ViewHolder describes an item view and metadata about its place within the RecyclerView.
*
* <p>{@link Adapter} implementations should subclass ViewHolder and add fields for caching
* potentially expensive {@link View#findViewById(int)} results.</p>
*
* <p>While {@link LayoutParams} belong to the {@link LayoutManager},
* {@link ViewHolder ViewHolders} belong to the adapter. Adapters should feel free to use
* their own custom ViewHolder implementations to store data that makes binding view contents
* easier. Implementations should assume that individual item views will hold strong references
* to <code>ViewHolder</code> objects and that <code>RecyclerView</code> instances may hold
* strong references to extra off-screen item views for caching purposes</p>
*/
public static abstract class ViewHolder {
public final View itemView;
.......
public ViewHolder(View itemView) {
if (itemView == null) {
throw new IllegalArgumentException("itemView may not be null");
}
this.itemView = itemView;
}
.......
}
2.우리 가 그것 을 계승 하여 무슨 일 을 했 는 지 다시 보 자.
public class XRViewHolder extends RecyclerView.ViewHolder {
public XRViewHolder(View view) {
super(view);
ButterKnife.bind(this, view);
}
.......
public void onBindViewHolder(VH holder, final int position) {
if (position >= 0) {
holder.itemView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
itemClick(getItem(position), position);
}
});
}
}
}
사용자 정의 XRViewHolder 를 보 는 구조 방법 에 도 슈퍼(view)가 사용 되 었 습 니 다.사실 여기 view 는 item 의 레이아웃 입 니 다.그러면 클릭 이 벤트 를 실현 하 는 것 이 쉬 워 집 니 다.holder.itemview.setOnClickListener 를 직접 사용 할 수 있 습 니 다.
질문
XRecyclerView.getChildAt(position).setOnClickListener()로 잘못된 문제 가 발생 했 습 니 다.addHeaderView 에 있 으 면 이러한 잘못된 문제 가 더욱 뚜렷 해 집 니 다.먼저 XRecyclerView 의 일부 소스 코드 를 살 펴 보 세 요.
public class XRecyclerView extends RecyclerView {
private WrapAdapter mWrapAdapter;
......
public void addHeaderView(View view) {
sHeaderTypes.add(HEADER_INIT_INDEX + mHeaderViews.size());
mHeaderViews.add(view);
if (mWrapAdapter != null) {
mWrapAdapter.notifyDataSetChanged();
}
}
......
private class WrapAdapter extends RecyclerView.Adapter<ViewHolder> {
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
if (viewType == TYPE_REFRESH_HEADER) {
return new SimpleViewHolder(mRefreshHeader);
} else if (isHeaderType(viewType)) {
return new SimpleViewHolder(getHeaderViewByType(viewType));
} else if (viewType == TYPE_FOOTER) {
return new SimpleViewHolder(mFootView);
}
return adapter.onCreateViewHolder(parent, viewType);
}
}
우리 가 addHeaderView 를 할 때마다 그 는 notifyDataSetChanged 를 진행 하고 onCreate View Holder 에 도 대응 하 는 isHeaderType 판단 이 있 기 때문에 첫 번 째 item 을 선택 하여 이벤트 처 리 를 하려 고 할 때 pos=0 은 headerview 에 속 할 수 있 습 니 다.총결산
item 클릭 이벤트 간단 하고 편리 하 며 빠 른 방법:holder.itemView.setOnClickListener()
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Bitrise에서 배포 어플리케이션 설정 테스트하기이 글은 Bitrise 광고 달력의 23일째 글입니다. 자체 또는 당사 등에서 Bitrise 구축 서비스를 사용합니다. 그나저나 며칠 전 Bitrise User Group Meetup #3에서 아래 슬라이드를 발표했...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.