一、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"><TextViewandroid:layout_width="match_parent"android:layout_height="wrap_content"android:text="Spinner Drop Down"android:textSize="30dp" /><Spinnerandroid:id="@+id/sp_drop"android:layout_width="match_parent"android:layout_height="30dp"android:spinnerMode="dropdown"></Spinner><TextViewandroid:layout_width="match_parent"android:layout_height="wrap_content"android:text="Spinner dialog"android:textSize="30dp" /><Spinnerandroid: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"};@Overrideprotected 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);}@Overridepublic void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {Toast.makeText(this,"You select " + stars[i],Toast.LENGTH_LONG).show();}@Overridepublic void onNothingSelected(AdapterView<?> adapterView) {}
}
4)效果图: