RecyclerView的使用

论坛 期权论坛 编程之家     
选择匿名的用户   2021-6-1 15:53   68   0

1.添加依赖,在gradle 中依赖下面的包

implementation 'androidx.recyclerview:recyclerview:1.0.0'

2、在activity_main.xml中添加控件

<androidx.recyclerview.widget.RecyclerView
            android:id="@+id/recycle_view"
            android:layout_width="match_parent"
            android:layout_height="match_parent"

            />

3、创建item布局,doctor_info_item.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="80">

        <ImageView
            android:id="@+id/img_doctor"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:paddingHorizontal="5dp"/>
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="10">

        <TextView
            android:id="@+id/tv_doctor_name_info"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="50" />

        <TextView
            android:id="@+id/tv_doctor_name"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="50" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="10">
        <TextView
            android:id="@+id/tv_bed_num_info"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="50" />

        <TextView
            android:id="@+id/tv_bed_num"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="50" />
    </LinearLayout>
</LinearLayout>

4、创建一个实体类,作为适配器的适配类型

package com.example.recyclerview_test;

public class DoctorInfo {
    private int img_doctor;
    private String doctor_name_info;
    private String doctor_name;
    private String bed_num_info;
    private String bed_num;

    public int getImg_doctor() {
        return img_doctor;
    }

    public void setImg_doctor(int img_doctor) {
        this.img_doctor = img_doctor;
    }

    public String getDoctor_name_info() {
        return doctor_name_info;
    }

    public void setDoctor_name_info(String doctor_name_info) {
        this.doctor_name_info = doctor_name_info;
    }

    public String getDoctor_name() {
        return doctor_name;
    }

    public void setDoctor_name(String doctor_name) {
        this.doctor_name = doctor_name;
    }

    public String getBed_num_info() {
        return bed_num_info;
    }

    public void setBed_num_info(String bed_num_info) {
        this.bed_num_info = bed_num_info;
    }

    public String getBed_num() {
        return bed_num;
    }

    public void setBed_num(String bed_num) {
        this.bed_num = bed_num;
    }

}

5、创建一个适配器

package com.example.recyclerview_test;

import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;

import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;

import java.util.List;

public class AdapterDoctor extends RecyclerView.Adapter<AdapterDoctor.ViewHoder> {

    private List<DoctorInfo> doctorInfoList;

    public AdapterDoctor(List<DoctorInfo> doctorInfoList) {
        this.doctorInfoList = doctorInfoList;
    }

    static public class ViewHoder extends RecyclerView.ViewHolder {
        ImageView img_doctor;
        TextView tv_doctor_name_info;
        TextView tv_doctor_name;
        TextView tv_bed_num_info;
        TextView tv_bed_num;

        public ViewHoder(@NonNull View itemView) {
            super(itemView);
            img_doctor = itemView.findViewById(R.id.img_doctor);
            tv_doctor_name_info = itemView.findViewById(R.id.tv_doctor_name_info);
            tv_doctor_name = itemView.findViewById(R.id.tv_doctor_name);
            tv_bed_num_info = itemView.findViewById(R.id.tv_bed_num_info);
            tv_bed_num = itemView.findViewById(R.id.tv_bed_num);
        }
    }

    @Override
    public int getItemCount() {
        return doctorInfoList.size();
    }

    @NonNull
    @Override
    public ViewHoder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View view= LayoutInflater.from(parent.getContext()).
                inflate(R.layout.doctor_info_item,parent,false);
        ViewHoder viewHoder=new ViewHoder(view);
        return viewHoder;
    }

    @Override
    public void onBindViewHolder(@NonNull ViewHoder holder, int position) {
        DoctorInfo doctorInfo=doctorInfoList.get(position);
        holder.img_doctor.setImageResource(doctorInfo.getImg_doctor());
        holder.tv_doctor_name_info.setText(doctorInfo.getDoctor_name_info());
        holder.tv_doctor_name.setText(doctorInfo.getDoctor_name());
        holder.tv_bed_num_info.setText(doctorInfo.getBed_num_info());
        holder.tv_bed_num.setText(doctorInfo.getBed_num());
    }
}

6、在MainActivity中创建实例,并把所需要的数据添加进去

package com.example.recyclerview_test;

import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;

import android.os.Bundle;

import java.util.ArrayList;
import java.util.List;

public class MainActivity extends AppCompatActivity {

    private List<DoctorInfo> doctorInfoList=new ArrayList<>();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initList();
        RecyclerView recyclerView=findViewById(R.id.recycle_view);
        LinearLayoutManager manager=new LinearLayoutManager(this);
        //recyclerView.setLayoutManager(manager);
        recyclerView.setLayoutManager(new GridLayoutManager(this,2));
        AdapterDoctor adapterDoctor=new AdapterDoctor(doctorInfoList);
        recyclerView.setAdapter(adapterDoctor);
    }

    private void initList() {
        for(int i=0;i<10;i++){
            DoctorInfo info=new DoctorInfo();
            info.setImg_doctor(R.drawable.aa);
            info.setDoctor_name_info("责任医生:");
            info.setDoctor_name("张大陆");
            info.setBed_num_info("床位");
            info.setBed_num("0"+i);
            doctorInfoList.add(info);
        }
    }
}

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP