RecyclerView의 다양한 레이아웃
                                            
 11281 단어  android 학습
                    
개념
RecyclerView는 서로 다른 보기 유형을 불러오는 데 사용할 수 있으며, 서버의 피드백을 바탕으로 서로 다른 레이아웃을 불러오는 것을 요구할 수 있습니다.어댑터에서 다시 쓰는 방법이 필요합니다.
getItemViewType(),onCreatViewHolder(),onBindViewHolder()실현
먼저 이전 절에서 기초
SimpleItemRecyclerViewAdapter 를 대체하는 대신 ComplexRecyclerViewAdapter 를 사용해야 합니다. 다음 예는 두 가지 레이아웃 Layout_viewHolder1.xml 을 포함하여 User 대상을 저장하고 layout_viewHolder2.xml 는 String 대상을 저장합니다. private ArrayList  public class ViewHolder1 extends RecyclerView.ViewHolder {
    private TextView label1, label2;
    public ViewHolder1(View v) {
        super(v);
        label1 = (TextView) v.findViewById(R.id.text1);
        label2 = (TextView) v.findViewById(R.id.text2);
    }
    public TextView getLabel1() {
        return label1;
    }
    public void setLabel1(TextView label1) {
        this.label1 = label1;
    }
    public TextView getLabel2() {
        return label2;
    }
    public void setLabel2(TextView label2) {
        this.label2 = label2;
    }
}  <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/llContainer"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:padding="5dp">
    <TextView
        android:id="@+id/text1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textStyle="bold"
        android:textAppearance="?android:attr/textAppearanceListItemSmall"
        android:gravity="center_vertical"/>
    <TextView
        android:id="@+id/text2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceListItemSmall"
        android:gravity="center_vertical" />
LinearLayout>  3. 복잡한 어댑터 만들기
ComplexRecyclerViewAdapterpublic class ComplexRecyclerViewAdapter extends RecyclerView.Adapter {
    // RecyclerView 
    private List items;
    // 
    private final int USER = 0 , IMAGE = 1;
    public ComplexRecyclerViewAdapter(List items) {
        this.items = items;
    }
    // 
    @Override
    public int getItemCount() {
        return this.items.size();
    }
// 
    @Override
    public int getItemViewType(int position) {
        if (items.get(position) instanceof User) {
            return USER;
        } else if (items.get(position) instanceof String) {
            return IMAGE;
        }
        return -1;
    }
// viewHolder 
    @Override
    public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
        switch (RecyclerView.ViewHolder.getItemViewType()) {
            case USER:
                ViewHolder1 vh1 = (ViewHolder1) holder;// 
                configureViewHolder1(vh1, position);
                break;
            case IMAGE:
                ViewHolder2 vh2 = (ViewHolder2) holder;
                configureViewHolder2(vh2);
                break;
            default:
                RecyclerViewSimpleTextViewHolder vh = (RecyclerViewSimpleTextViewHolder) holder;
                confgureDefaultViewHolder(vh, position);
                break;
        }
    }
    // viewholder,
    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        RecyclerView.ViewHolder viewHolder;
        LayoutInflater inflater = LayoutInflater.from(parent.getContext());
        switch (viewType) {
            case USER:
                View v1 =inflater.inflate(R.layout.layout_viewholder1, parent, false);
                viewHolder = new ViewHolder1(v1);
                break;
            case IMAGE:
                View v2 = inflater.inflate(R.layout.layout_viewholder2, parent, false);
                break;
            default:
                View v = inflater.inflate(android.R.layout.simple_list_item_1, parent, false);
                viewHolder = new RecyclerViewSimpleTextViewHolder(v);
                break;
        }
        return viewHolder;
    }
    // viewHolder 
    private void configureDefaultViewHolder(RecyclerViewSimpleTextViewHolder vh, int position) {
        vh.getlabel().setText((CharSequence) items.get(position));
    }
    private void configureViewHolder1(ViewHolder1 vh1, int position) {
        User user = (User) items.get(position);
        if (user != null) {
            vh1.getLabel1().setText("Name:" + user.name);
            vh1.getLabel2().setText("Hometown" + user.hometown);
        }
    }
    private void configureViewHolder2(ViewHolder2 vh2) {
        vh2.getImagView().setImageResource(R.mipmap.ic_launcher);
    }
}     마지막 주 활동
recyclerView.setAdapter(new ComplexRecyclerViewAdapter(getSampleArrayList()));
                이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
kernel 버전 번호 수정kernel 버전 번호 수정 방법은 다음과 같습니다. 파일을 수정하려면 다음과 같이 하십시오. 구체적으로 다음과 같이 수정되었습니다. kernel/fs/proc/version.c linux_proc_banner 는 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.