RecyclerView에서 다른 레이아웃 로드
RecyclerView에 드롭다운 리셋이 있을 때, 때때로 설계도에 나타난 목록은 머리 레이아웃이 있는데, 이것은 어댑터를 통해 여러 세트의 레이아웃을 불러올 수 있다. 여기는 두 가지 레이아웃을 불러오는 것을 예로 들어 설명한다.
어댑터 코드부터 볼게요.
import android.annotation.SuppressLint;
import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import com.alvin.R;
import java.util.ArrayList;
import java.util.List;
public class MainListAdapter extends RecyclerView.Adapter{
private List list;
private ArrayList jdList;
private Context context;
public MainListAdapter(List list,ArrayList jdList, Context context) {
this.list = list;
this.jdList = jdList;
this.context = context;
}
@Override
public int getItemViewType(int position) {
return list.get(position).getShowType();
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
if(viewType==1){
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.layout_header_main_list,parent,false);
return new HeaderHolder(view);
}else{
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_list_main,parent,false);
return new ViewHolderItem(view);
}
}
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
if(holder instanceof HeaderHolder){
final HeaderHolder headerHolder = (HeaderHolder) holder;
//TODO
}else if(holder instanceof ViewHolderItem){
}
}
@Override
public int getItemCount() {
return list.size();
}
private class HeaderHolder extends RecyclerView.ViewHolder{
HeaderHolder(View itemView) {
super(itemView);
}
}
private class ViewHolderItem extends RecyclerView.ViewHolder{
ViewHolderItem(View itemView) {
super(itemView);
}
}
}
getItem ViewType () 는 목록의 현재 레이아웃 유형을 되돌려줍니다. 어댑터가 레이아웃을 불러올 때 정렬하여 판단합니다. 즉 onBind ViewHolder () 방법에서 해당하는 판단 논리를 실현합니다.
layout 관리자가 Grid Layout Manager라면 헤더 레이아웃은 span Count를 독점해야 한다. 즉, 두 열이면 헤더 너비가 두 열이다.
layoutManager = GridLayoutManager(this, 2)
recyclerView.layoutManager = layoutManager
//.........
// :
layoutManager?.let {
it.spanSizeLookup = object : GridLayoutManager.SpanSizeLookup(){
override fun getSpanSize(position: Int): Int {
if(position==0){
return it.spanCount
}else{
return 1
}
}
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.