Android |(十七)Adapter 适配器

目录

一、概述

二、继承关系

(一)继承结构图 

(二)常用adapter 

三、RecyclerView.Adapter

(一)概述

(二)方法说明

四、使用示例


可能需要的知识:AS| (二)Android Studio快捷键【JetBrains家族】_android studio jetbrains-CSDN博客

java关键字abstract(抽象)详解_abstractjava-CSDN博客

系列文章:Android |(六)基础控件10 RecycleView 滑动【进阶】-CSDN博客 

一、概述

  1. 是什么?        一种Android对象
  2. 干什么?       是连接后端数据data和前端显示UI(View)之间一个重要纽带
  3. 有什么用?    填充数据,即把所携带的数据填充(映射)到用户界面上

二、继承关系

(一)继承结构图 

继承结构图(只列出常用的)

(二)常用adapter 

  • BaseAdapter(实际开发用的最多):抽象类,所有Adapter的父类,使用时继承并重写相关方法
  • ArrayAdapter(最简单):支持泛型操作,但只能展现一行文字
  • SimpleAdapter(较常用):具有良好扩展性,可以自定义多种效果
  • SimpleCursorAdapter(不推荐):用于显示简单文本,一般在数据库那用到,有点过时

三、RecyclerView.Adapter

(一)概述

        RecyclerView是Android用于取代ListView的SDK,灵活性和可替代性都比ListView更好。其可以实现数据纵向滚动和横向滚动(ListView做不到横向滚动)。

  • RecyclerView也存在一些问题: 高度不能自适应、最后一个 Item 显示不全被遮挡等。而无论ListView还是RecyclerView都必不可少地会使用到适配器,其配置比较繁琐。
  • RecycleView使用的适配器并不是之前的BaseAdapter,而是需要继承RecyclerView.Adapter<VH extends RecycleView.ViewHolder>。

可以看出,RecycleView.Adapter是一个抽象类,并支持泛型

补充:抽象类,不能被实例化,即不能直接new一个抽象类,但有自己的构造方法,需要通过继承去实现抽象方法

public abstract static class Adapter<VH extends ViewHolder> {
……
}

(二)方法说明

 1.定义MyAdapter继承RecyclerView.Adapter后,Android Stuido提醒需要重写3个方法:

//方法1:
public RecyclerView.ViewHolder onCreateViewHolder
    (ViewGroup parent, int viewType)
 
//方法2:
public void onBindViewHolder
    (RecyclerView.ViewHolder holder, int position)
 
//方法3:
public int getItemCount()

2.定义一个静态内部类ViewHolder继承RecycelrView.ViewHolder

在指定了泛型为ViewHoler后,方法2也会根据泛型改变onBindViewHolder(RecyclerHolder holder, int position)

以上步骤完成后,代码如下:

package com.example.recycleview.RecyclerViewDemo;
import android.view.View;
import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;

/**1.定义Adapter*/
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {
    /**3.重写3个方法*/

    /**
     * @param parent   理解为item的ViewGroup,item的子控件加载在其中
     * @param viewType item的类型,根据viewType创建
不同类型的ViewHolder——>加载不同类型的item
     * @return
     */
    //创建ViewHolder
    @NonNull
    @Override
    public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        return null;
    }

    /**
     * @param holder   就是上面onCreateViewHolder中创建的ViewHolder
     * @param position item对应 数据源集合(DataList) 的position
     */
    //给ViewHolder绑定数据
    @Override
    public void onBindViewHolder(@NonNull ViewHolder holder, int position) {

    }

    //实际item的数量
    @Override
    public int getItemCount() {
        return 0;
    }

    /** 2.定义ViewHolder*/
    public static class ViewHolder extends RecyclerView.ViewHolder {
        public ViewHolder(@NonNull View itemView) {
            super(itemView);
        }
    }
}

四、使用示例
 

  • 6
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值