Andriod 【自动提示文本框(AutoCompleteTextView)与下拉框(Spinner)】适配器①

1.高级控件与低级控件区别:

是否使用适配器,而AutoCompleteTextView是一个高级控件 ,需要加上适配器使用

2.适配器种类和作用

 数组适配器 ArrayAdapter

 简单适配器 SimpleAdapter

 自定义适配器

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: 可支持选择多个值(在多次输入的情况下),分别用分隔符分开,并且在每个值选中的时候再次输入值时会自动去匹配。
      可用在发短信,发邮件时选择联系人这种类型当中。

扫描二维码关注公众号,回复: 3662244 查看本文章

5.代码示例

package com.example.a09;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.SimpleAdapter;
import android.widget.Spinner;
import android.widget.Toast;

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

public class MainActivity extends AppCompatActivity {
    private Spinner sp_main_sp1;//①下拉框
    private List<Option> data1;
    private ArrayAdapter adapter;

    private Spinner sp_main_sp2;//②下拉框
    private List<Map<String,Object>> data2;
    private SimpleAdapter adapter2;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        sp_main_sp1 = findViewById(R.id.sp_main_sp1);
        sp_main_sp2 = findViewById(R.id.sp_main_sp2);
        data1 = listData1();
        adapter  = new ArrayAdapter(this,R.layout.act_mian_item1,data1);
        sp_main_sp1.setAdapter(adapter);
        sp_main_sp1.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                Option option = (Option) parent.getSelectedItem();
                Toast.makeText(MainActivity.this, option.getHtml(), Toast.LENGTH_SHORT).show();
            }

            @Override
            public void onNothingSelected(AdapterView<?> parent) {

            }
        });
        data2 = listData2();
        //创建适配器
        adapter2 = new SimpleAdapter(this,data2,R.layout.sp_main_item2,new String[]{"image","name"},new int[]{ R.id.iv_main_iv1,R.id.it_main_it1});
        //绑定适配器
        sp_main_sp2.setAdapter(adapter2);
    }

    //获取数据
    private List<Map<String,Object>> listData2() {
        List<Book> list =new BookDAO().list();
        List<Map<String,Object>> mapList = new ArrayList<>();
        Map<String,Object> map = null;
        for (Book book:list) {
            map = new HashMap<>();
            map.put("name",book.getName());
            map.put("image",book.getImage());
            mapList.add(map);
        }
        return  mapList;
    }

    private List<Option> listData1() {
        List<Book> list =new BookDAO().list();
        List<Option> optionList = new ArrayList<>();
        for (Book book:list) {
            optionList.add(new Option(book.getId()+"",book.getName()));
        };
        return  optionList;
    }
}

猜你喜欢

转载自blog.csdn.net/qq_40979551/article/details/82687693