RecyclerView的用法(把两个以上的xml文件显示):

我们以之前的垂直来测试:

package com.example.myfirstapplication.RecyclerView;

import android.content.Context;

import android.view.LayoutInflater;

import android.view.View;

import android.view.ViewGroup;

import android.widget.ImageView;

import android.widget.LinearLayout;

import android.widget.TextView;

import android.widget.Toast;

import androidx.annotation.NonNull;

import androidx.recyclerview.widget.RecyclerView;

import com.example.myfirstapplication.R;

public class listAdpter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {

    @NonNull

    private Context context;

    private LayoutInflater layoutInflater;

    public listAdpter(Context context) {

        this.context = context;

    }

    public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {

        if(viewType == 0){

            return new listAdpterViewHold(LayoutInflater.from(context).inflate(R.layout.once_recycleview_list, parent, false));

        }else{

            return new listAdpterViewHold2(LayoutInflater.from(context).inflate(R.layout.once_listview, parent, false));

            //因为这里返回的是listAdpterViewHold2而上面返回的是listAdpterViewHold所以报错,我们只好返回上一个父类。

        }

    }

    //要实现两种xml文件就要用:

//    int viewType。这个变量有个叫get

    @Override

    public int getItemViewType(int position) {

        if(position % 2 == 0){

            return 0;

        }else {

            return 1;

        }

    }

//我们重写了这个方法就可以改变viewType的值,以才来判断。

    @Override

    public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, final int position) {

        if(getItemViewType(position)==0){

            ((listAdpterViewHold)holder).tv.setText(“test!”);

            //((listAdpterViewHold)holder)用这个强制转换。

            //这里的tv因为没有指向我们哪一个viewholder所以我们就要判断一下。

        }else {

            ((listAdpterViewHold2)holder).tv1.setText(“AMD YES!”);

        }

        holder.itemView.setOnClickListener(new View.OnClickListener() {

            @Override

            public void onClick(View v) {

                Toast.makeText(context, “click” + position, Toast.LENGTH_LONG).show();

            }

        });

    }

    @Override

    public int getItemCount() {

        return 30;

    }

    class listAdpterViewHold extends RecyclerView.ViewHolder {

        private TextView tv;

        public listAdpterViewHold(@NonNull View itemView) {

            super(itemView);

            tv = itemView.findViewById(R.id.tv);

        }

    }

    //要填入两个xml就要有两个class

    class listAdpterViewHold2 extends RecyclerView.ViewHolder {

        private TextView tv1, tv2, tv3;

        private ImageView iv;

        public listAdpterViewHold2(@NonNull View itemView) {

            super(itemView);

            tv1 = itemView.findViewById(R.id.tvtitle);

            tv2 = itemView.findViewById(R.id.tvdata);

            tv3 = itemView.findViewById(R.id.et);

            iv = itemView.findViewById(R.id.iv);

        }

    }

}

截屏2020-02-21下午3.16.49.png
最后修改日期:2020年2月21日

作者

留言

撰写回覆或留言

发布留言必须填写的电子邮件地址不会公开。