Android Studio的适配器Adapter以及Adapterview的使用
适配器模式:实现原理类似于数据模型M负责存放数据,通过控制器C将数据显示在相应的视图V上。
数据源:数据、集合、游标
适配器:ArrayAdapter、SimpleAdapter、SimpleCursorAdapter、BaseAdapter
控件:AutoCompleteTextView(自动提示框)、Spinner(下拉列表)、ListView(列表)、GridView(网络图)
适配器
适配器在AdapterView控件和数据源之间扮演着桥梁的角色,提供访问数据源的入口,将从数据源取出的数据项逐项加到AdapterView控件中。
1、ArrayAdapter:适用于列表项只含有文本信息的情况
2、SimpleAdapter:即可以处理列表项全是文本的情况,又可以处理列表项包含其他控件(如图片、文本、按钮等)情况
3、SimpleCursorAdapter:专门用来把一个Cursor中的数据映射到列表中,Cursor中的每一条数据映射为列表中的一项。
4、BaseAdapter:根据xml文件中定义的样式进行列表项的填充,完全自定义数据适配方式,适用性最强。
基本步骤
1、创建数据源,创建AdapterView控件
2、创建适配器
3、绑定数据源
常用的AdapterView
AutoCompleteTextView+ArrayAdapter适配器
AutoCompleteTextView可以根据用户的输入弹出一个智能提示的下拉列表,这样便可以选择相应的选项,当输入的字符串符合数据源里的选项就会出现相关的选项。
ArrayAdapter:
public ArrayAdapter(Context context,int resource,int textViewResourceId,Object[] object,List object);
Context context:Context上下文对象
int resource:对应列表项item的布局文件ID
int textViewResourceId:列表项item布局中对应的TextView的ID
Object[] object:需要显示数据的数组
List object:需要显示数据的集合
布局显示的xml页面:
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<AutoCompleteTextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/autoCompletetextview"
android:completionHint="国家列表"
tools:ignore="MissingConstraints" />
</androidx.constraintlayout.widget.ConstraintLayout>
后台代码:
package com.example.adapter;
import androidx.appcompat.app.AppCompatActivity;
import android.graphics.Color;
import android.os.Bundle;
import android.widget.Adapter;
import android.widget.ArrayAdapter;
import android.widget.AutoCompleteTextView;
public class MainActivity extends AppCompatActivity {
//定义全局变量
private AutoCompleteTextView autoCompleteTextView;
//适配器变量
private ArrayAdapter<String> adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//定义数据源
String[] context = new String[]{
"China","Britain","Russia","Canada","U.S.A","Chile","Germany"};
//绑定控件
autoCompleteTextView = (AutoCompleteTextView)findViewById(R.id.autoCompletetextview);
//创建Adapter
adapter = new ArrayAdapter<String>(this, android.R.layout.simple_expandable_list_item_1,context);
//将控件绑定到适配器
autoCompleteTextView.setAdapter(adapter);
//设置输入的字符的颜色
autoCompleteTextView.setTextColor(Color.YELLOW);
//设置输入1个字符后开始提示
autoCompleteTextView.setThreshold(1);
}
}
Spinner控件+ArrayAdapter适配器
Spinner是下拉列表控件,当用户点击控件时,下拉列表控件弹出选项列表给用户选择,每次只显示用户选择的选项
Spinner可以有两种方式加载数据:
1、在res/values文件下准备一个数组资源文件,事先定义好要加载的数据资源
2、直接在java代码中使用ArrayAdapter对象。
获取用户点击的下拉列表的选项,可以使用setOnItemSelectedListener()方法。
方法一代码:
布局页面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_heig