一、Adapter
Adapter 是一个非常重要的组件,用于将数据与视图进行绑定。
一般的用法是一个View中要显示多个布局相同但数据不同的item(例如论坛界面的多个帖子,购物车里的多个商品)。
可以将item的布局和数据输入Adapter,View使用Adapter,就可以得到多个布局相同、内容不同的item了。
Adapter 通常用于在 ListView、RecyclerView、Spinner 等组件中显示数据。Adapter 的作用是将数据转换成视图,以便用户可以查看和操作数据。

Adapter 有多种类型,包括 ArrayAdapter、CursorAdapter、SimpleAdapter、BaseAdapter 等。
不同的 Adapter 类型适用于不同的数据源和视图类型。
二、ArrayAdapter示例
ArrayAdapter是最简单的适配器,只展示一行文字。通过使用ArrayAdapter,可以快速了解适配器的使用方法。

1)item的布局文件
因为 ArrayAdapter每个item只显示一行文字,所有放一个TextView就可以了
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="50dp"
    android:textSize="30dp"
    android:textColor="@color/purple_200"
    android:text="test"
    android:gravity="center"
    >
</TextView>2)View使用Spinner,有下拉列表和对话框两种模式
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".SpinnerActivity">
    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Spinner Drop Down"
        android:textSize="30dp" />
    <Spinner
        android:id="@+id/sp_drop"
        android:layout_width="match_parent"
        android:layout_height="30dp"
        android:spinnerMode="dropdown"></Spinner>
    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Spinner dialog"
        android:textSize="30dp" />
    <Spinner
        android:id="@+id/sp_dialog"
        android:layout_width="match_parent"
        android:layout_height="30dp"
        android:spinnerMode="dialog"></Spinner>
</LinearLayout>3)使用Adapter绑定item和数据,Spinner使用该Adapter
ArrayAdapter<String> adapter = new ArrayAdapter<>(this,R.layout.item_select,stars); sp_dropdown.setAdapter(adapter); 设置Spinner默认选择第一项 sp_dropdown.setSelection(0); 监听Spinner选择item的动作 sp_dropdown.setOnItemSelectedListener(this);
package com.example.chapter08;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.Toast;
public class SpinnerActivity extends AppCompatActivity implements AdapterView.OnItemSelectedListener {
    public static final String[] stars = {"Venus",  "Earth", "Jupiter", "Mars", "Mercury"};
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_spinner);
        Spinner sp_dropdown = findViewById(R.id.sp_drop);
        ArrayAdapter<String> adapter = new ArrayAdapter<>(this,R.layout.item_select,stars);
        sp_dropdown.setAdapter(adapter);
        sp_dropdown.setSelection(0);
        sp_dropdown.setOnItemSelectedListener(this);
        Spinner sp_dialog = findViewById(R.id.sp_dialog);
        sp_dialog.setAdapter(adapter);
        sp_dialog.setSelection(0);
        sp_dialog.setOnItemSelectedListener(this);
    }
    
    @Override
    public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
        Toast.makeText(this,"You select " + stars[i],Toast.LENGTH_LONG).show();
    }
    @Override
    public void onNothingSelected(AdapterView<?> adapterView) {
    }
}4)效果图:




















