Android RecyclerView 에 FootView 와 HeadView 추가
이 글 은 RecyclerView 의 기본 적 인 사용 방법 을 소개 했다.원문 은 다음 과 같다.
FootView 와 HeadView 는 ListView 자체 에 해당 하 는 함수 가 있 지만 새로운 유행 하 는 RecyclerView 에 서 는 없어 졌 습 니 다.FootView 는 페이지 별로 불 러 오기(더 많이 끌 어 올 리 기)에서 중요 한 역할 을 하기 때문에 배 워 야 합 니 다.(HeadView 의 추 가 는 FootView 의 추가 와 대체적으로 같 습 니 다.FootView 의 추가 만 말 합 니 다)
효과:(원본 코드 는 문장 끝 에 있 음)
관건 을 실현 하 다
int getItemView Type(int position):이 함 수 는 RecyclerView 에서 자체 적 으로 가지 고 있 는 함수 입 니 다.매개 변 수 는 item 의 position 이 고 int 형식 으로 형식 을 표시 합 니 다.
이 함수 의 역할 은 일반적인 아 이 템 과 FootView 의 아 이 템 을 구분 하여 FootView 라 는 아 이 템 이 adapter 의 맨 아래 에 있 도록 하 는 것 입 니 다.
예 에서 두 가지 유형 을 다음 과 같이 정의 했다.
// final int ViewType
private final int NORMAL_TYPE = 0;
private final int FOOT_TYPE = 1111;
이 함 수 는 다음 과 같다.
@Override
public int getItemViewType(int position) {
if (position == max_count - 1) {
return FOOT_TYPE;
}
return NORMAL_TYPE;
}
실현 절차1.getItemViewType(int position)을 정의 하고 자신 이 필요 로 하 는 ViewType 의 유형 을 정의 합 니 다.
2.ViewHolder(),onCreate ViewHolder()와 onBindViewHolder()를 정의 할 때 두 가지 상황 을 고려 합 니 다.하 나 는 일반적인 item 이 고 다른 하 나 는 FootView 입 니 다.
또한 기본 ViewHolder()함수 에는 View itemView 매개 변수 만 있 습 니 다.필요 하기 때문에 int view Type 의 인 자 를 추가 해 야 합 니 다.코드 에는 다음 과 같 습 니 다.
// viewHolder, onBindViewHolder
public ViewHolder(View itemView, int viewType) {
super(itemView);
if (viewType == NORMAL_TYPE) {
tvViewHolder = (TextView) itemView.findViewById(R.id.tv_view_holder);
llViewHolder = (LinearLayout) itemView;
} else if (viewType == FOOT_TYPE) {
tvFootView = (TextView) itemView;
}
}
여기에 세 함수 의 대체적인 작용 을 다시 한 번 말씀 드 리 겠 습 니 다.ViewHolder(View itemView, int viewType):
item 레이아웃 에 있 는 컨트롤 을 ViewHolder 에서 정의 하 는 속성 과 연결 하여 onBindViewHolder()에서 사용 하기 편리 합 니 다.
onCreateViewHolder(ViewGroup parent, int viewType):
이 함 수 는 모든 아 이 템 을 만 드 는 데 사 용 됩 니 다.마지막 으로 view 가 아니 라 돌아 오 는 ViewHolder 입 니 다.
onBindViewHolder(ViewHolder holder, int position):
이 함수 에 서 는 아 이 템 의 컨트롤 에 데 이 터 를 연결 하 는 데 사 용 됩 니 다.
코드:
상기 분석 을 통 해 코드 를 보면 독자 들 이 쉽게 이해 할 수 있 을 것 이다.아래 에 관건 적 인 adapter 코드 와 소스 주 소 를 첨부 한다.
public class RecyclerAdapter extends RecyclerView.Adapter<RecyclerAdapter.ViewHolder> {
private List<String> mData;//
private int max_count = 10;//
private Boolean isFootView = false;// FootView
private String footViewText = "";//FootView
// final int ViewType
private final int NORMAL_TYPE = 0;
private final int FOOT_TYPE = 1111;
public RecyclerAdapter(List<String> data) {
mData = data;
}
public class ViewHolder extends RecyclerView.ViewHolder {
public TextView tvViewHolder;
public LinearLayout llViewHolder;
public TextView tvFootView;//footView TextView layout
// viewHolder, onBindViewHolder
public ViewHolder(View itemView, int viewType) {
super(itemView);
if (viewType == NORMAL_TYPE) {
tvViewHolder = (TextView) itemView.findViewById(R.id.tv_view_holder);
llViewHolder = (LinearLayout) itemView;
} else if (viewType == FOOT_TYPE) {
tvFootView = (TextView) itemView;
}
}
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View normal_views = LayoutInflater.from(parent.getContext()).inflate(
R.layout.rc_item, parent, false);
View foot_view = LayoutInflater.from(parent.getContext()).inflate(
R.layout.foot_view, parent, false);
if (viewType == FOOT_TYPE)
return new ViewHolder(foot_view, FOOT_TYPE);
return new ViewHolder(normal_views, NORMAL_TYPE);
}
@Override
public int getItemViewType(int position) {
if (position == max_count - 1) {
return FOOT_TYPE;
}
return NORMAL_TYPE;
}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
// ViewHolder
Log.d("xjj", getItemViewType(position) + "");
// footview , ViewType FOOT_TYPE
if (isFootView && (getItemViewType(position) == FOOT_TYPE)) {
holder.tvFootView.setText(footViewText);
} else {
holder.tvViewHolder.setText(mData.get(position) + position);
}
}
@Override
public int getItemCount() {
if (mData.size() < max_count) {
return mData.size();
}
return max_count;
}
// footView
public void setFootViewText(String footViewText) {
isFootView = true;
this.footViewText = footViewText;
}
}
넓히다다음 글 에서 필 자 는 이 를 바탕 으로 약간의 변경 을 했 고 페이지 별로 불 러 오 는 기능 을 쉽게 실현 했다.글 의 주 소 는 다음 과 같다.
http://blog.csdn.net/double2hao/article/details/52788708
원본 주소:안 드 로 이 드 RecyclerView 레이아웃 은 정말 그렇게 간단 합 니 다!
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 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에 따라 라이센스가 부여됩니다.