适配器模式在Android Studio中主要应用于将数据从数据源(如集合、游标等)展示到相应的视图(如AutoCompleteTextView、Spinner、ListView、GridView等)。它通过桥梁的形式连接AdapterView控件和数据源,提供访问数据源的入口。

适配器模式的实现原理类似于数据模型,M负责存放数据,通过控制器C将数据显示在相应的视图V上。常用的数据源包括数据、集合、游标。适配器方面,有ArrayAdapter、SimpleAdapter、SimpleCursorAdapter和BaseAdapter等。

在这些适配器中,AutoCompleteTextView可以与ArrayAdapter配合使用,根据用户的输入弹出智能提示的下拉列表。而Spinner则可以与ArrayAdapter配合使用,实现下拉列表的选择功能。ListView和GridView则可以与不同的适配器配合使用,实现不同样式的列表和网络图展示。

基本步骤如下:

1. 创建数据源和AdapterView控件;

2. 创建适配器;

3. 绑定数据源。

以AutoCompleteTextView+ArrayAdapter适配器为例,首先需要创建一个数据源,然后创建一个AutoCompleteTextView控件。接着,创建一个ArrayAdapter适配器,并设置相关的参数,如上下文对象、布局文件ID、数据数组等。最后,将适配器绑定到AutoCompleteTextView控件上。

以下是一个简单的示例代码:

```java

// 创建数据源

String[] data = {"选项1", "选项2", "选项3"};

List list = new ArrayList<>(Arrays.asList(data));

// 创建AutoCompleteTextView控件

autoCompleteTextView = findViewById(R.id.auto_complete_text_view);

// 创建ArrayAdapter适配器并设置参数

ArrayAdapter adapter = new ArrayAdapter<>(this, R.layout.list_item, data);

adapter.setDropDownViewResource(R.layout.dropdown_item);

// 将适配器绑定到AutoCompleteTextView控件上

autoCompleteTextView.setAdapter(adapter);

```

在这个示例中,我们首先创建了一个字符串数组作为数据源,然后将其转换为List集合。接着,我们创建了一个AutoCompleteTextView控件,并为其设置了适配器。最后,我们将适配器绑定到AutoCompleteTextView控件上。

```java

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;

import android.view.View;

import android.widget.ArrayAdapter;

import android.widget.AutoCompleteTextView;

public class MainActivity extends AppCompatActivity {

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

AutoCompleteTextView autoCompleteTextView = findViewById(R.id.autoCompletetextview);

String[] countries = {"中国", "美国", "英国", "澳大利亚"};

ArrayAdapter adapter = new ArrayAdapter<>(this, android.R.layout.simple_dropdown_item_1line, countries);

autoCompleteTextView.setAdapter(adapter);

}

}

```

```java

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 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(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

android:layout_width="match_parent"

android:layout_height="match_parent">

android:id="@+id/spinner"

android:layout_width="wrap_content"

android:layout_height="wrap_content" />

```

Java代码:

```java

import android.os.Bundle;

import android.view.View;

import android.widget.AdapterView;

import android.widget.ArrayAdapter;

import android.widget.Spinner;

import androidx.appcompat.app.AppCompatActivity;

public class MainActivity extends AppCompatActivity {

private Spinner spinner;

private ArrayAdapter adapter;

private String[] data = {"选项1", "选项2", "选项3"};

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

spinner = findViewById(R.id.spinner);

adapter = new ArrayAdapter<>(this, android.R.layout.simple_spinner_item, data);

adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

spinner.setAdapter(adapter);

spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {

@Override

public void onItemSelected(AdapterView parent, View view, int position, long id) {

String selectedItem = data[position];

// 根据选中的项执行相应操作

}

@Override

public void onNothingSelected(AdapterView parent) {

// 当没有选中任何项时执行的操作

}

});

}

}

```