一、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)效果图: