AndroidStudio的高级控件-配适器

1.AndroidStudio 的高级控件 配适器

  1. 高级控件与低级控件区别
    是否使用适配器

2. 适配器种类和作用
2.1 种类
数组适配器 ArrayAdapter
new ArrayAdapter(this,R.layout.actv_style, names);

  简单适配器 SimpleAdapter
    也叫“并不简单的简单适配器”^_^

  自定义适配器

2.2 作用
桥梁
展示

3. 高级控件使用步骤
3.1 获取数据
3.2 创建适配器
3.3 绑定适配器

4. 自动提示文本框
4.1 AutoCompleteTextView(单一提示)
android:completionThreshold=“1”

4.2 MultiAutoCompleteTextView(多次提示)–作业
//设置多次提示时,设置分隔符方法
Tokenizer t = new MultiAutoCompleteTextView.CommaTokenizer();
mactv_main.setTokenizer(t);

4.3 两种自动提示文本框的异同
AutoCompleteTextView:支持基本的自动完成功能,适用在各种搜索功能中,并且可以根据自己的需求设置他的默认显示数据
MultiAutoCompleteTextView: 可支持选择多个值(在多次输入的情况下),分别用分隔符分开,并且在每个值选中的时候再次输入值时会自动去匹配。
可用在发短信,发邮件时选择联系人这种类型当中。

例图:
在这里插入图片描述

代码如下:
activity_main.xml里面写: 设置布局和ID在这里插入图片描述

act_main_item.xml 用来展示效果用的在这里插入图片描述

MainActity.java里面写java代码:用来重写方法实例化对象赋值
在这里插入图片描述

5. 下拉框
Spinner
实现图片和名字一起的效果需要的文件:
在这里插入图片描述

Book实体类代码为:
package com.example.t211_a07;

public class Book {

private Integer id;
private String name;
private Integer image;

public Book() {
}

public Integer getId() {
    return id;
}

public void setId(Integer id) {
    this.id = id;
}

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

public Integer getImage() {
    return image;
}

public void setImage(Integer image) {
    this.image = image;
}

}

BookDao文件的代码为:
package com.example.t211_a07;

import java.util.ArrayList;
import java.util.List;

public class BookDAO {
public List list() {
List bookList = new ArrayList();

    String[] names = {"愤怒的小鸟", "汤姆猫", "落汤鸡", "牛牛", "哈巴狗", "神龙", "烤鸭",
            "小象", "美人鱼", "九尾狐"};
    int[] images = {R.drawable.bird, R.drawable.cat, R.drawable.chicken,
            R.drawable.cow, R.drawable.dog, R.drawable.dragon,
            R.drawable.duck, R.drawable.elephant, R.drawable.fish,
            R.drawable.fox};

    Book b = null;
    for (int i = 0; i < names.length; i++) {
        b = new Book();
        b.setId(i + 1);
        b.setName(names[i]);
        b.setImage(images[i]);

        bookList.add(b);
    }

    return bookList;
}

}

MainActivity的代码为:
package com.example.t211_a07;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.AutoCompleteTextView;
import android.widget.SimpleAdapter;
import android.widget.Spinner;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class MainActivity extends AppCompatActivity {
private String[] data1;
private ArrayAdapter adapter1;
private AutoCompleteTextView act_main_content;
private Spinner sp_main_sel;
private Spinner sp_main_sel2;

private ArrayAdapter adapter2;
private List<Option> data2;

private SimpleAdapter adapter3;
private List<Map<String,Object>> data3;

public MainActivity() {
}

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    act_main_content=findViewById(R.id.act_main_content);
    sp_main_sel =findViewById(R.id.sp_main_sel);
    sp_main_sel2 =findViewById(R.id.sp_main_sel2);

    //获取数据
    data1=new String[]{ "愤怒的小鸟", "汤姆猫", "落汤鸡", "牛牛", "哈巴狗", "神龙", "烤鸭",
            "小象", "美人鱼", "九尾狐" };
    //创建适配器   把数据绑定到项资源里面
    adapter1=new ArrayAdapter(this,R.layout.act_main_item,data1);
    //绑定适配器
    act_main_content.setAdapter(adapter1);

    data2=loadData2();
    //创建适配器   把数据绑定到项资源里面
    adapter2=new ArrayAdapter(this,R.layout.act_main_item,data2);
    //绑定适配器
    sp_main_sel.setAdapter(adapter2);


    data3=loadData3();
    adapter3 =new SimpleAdapter(this,data3,R.layout.sp_main_item2,new String[]{"image","name"},new int[]{R.id.sp_main_item_img,R.id.tv_main_item_content});
    sp_main_sel2.setAdapter(adapter3);
}

private List<Map<String,Object>> loadData3() {
    List<Book> books=new BookDAO().list();
    List<Map<String,Object>> maps=new ArrayList<>();
    for (Book book:books){
      Map map=new HashMap();
      map.put("image",book.getImage());
      map.put("name",book.getName());
      maps.add(map);
    }
    return maps;
}

private List<Option> loadData2() {
    List<Book> books=new BookDAO().list();
    List<Option> sels=new ArrayList<>();
    for (Book book:books){
      sels.add(new Option(book.getId()+"",book.getName()));

    }
    return  sels;
}

}

Option的代码为:
package com.example.t211_a07;

public class Option {
private String value;
private String html;

public String getValue() {
    return value;
}

public void setValue(String value) {
    this.value = value;
}

public String getHtml() {
    return html;
}

public void setHtml(String html) {
    this.html = html;
}

public Option(String value, String html) {
    this.value = value;
    this.html = html;
}

@Override
public String toString() {
    return html;
}

}

act_main_item.xml代码为:

<?xml version="1.0" encoding="utf-8"?>

android:layout_width=“match_parent”
android:layout_height=“wrap_content”>

activity_mian.xml代码为:

<?xml version="1.0" encoding="utf-8"?>

<Spinner
    android:id="@+id/sp_main_sel"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">
</Spinner>

<Spinner
    android:id="@+id/sp_main_sel2"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">
</Spinner>

sp_main_item2.xml代码为:

<?xml version="1.0" encoding="utf-8"?>

<ImageView
    android:id="@+id/sp_main_item_img"
    android:layout_width="80dp"
    android:layout_height="wrap_content" />


效果图为:
在这里插入图片描述

素材
String[] names = { “愤怒的小鸟”, “汤姆猫”, “落汤鸡”, “牛牛”, “哈巴狗”, “神龙”, “烤鸭”,
“小象”, “美人鱼”, “九尾狐” };
int[] images = { R.drawable.bird, R.drawable.cat, R.drawable.chicken,
R.drawable.cow, R.drawable.dog, R.drawable.dragon,
R.drawable.duck, R.drawable.elephant, R.drawable.fish,
R.drawable.fox };

事件监听
AdapterView.OnItemSelectedListener

核心:
1、数组适配器
String[] AutoCompleteTextView 项资源
List Spinner 项资源
2、获取下拉框的值
3、简单适配器
List 项资源

猜你喜欢

转载自blog.csdn.net/qq_41997812/article/details/82749955