Android高级控件

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


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

5. 下拉框
   Spinner
   

   素材 
   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<Dept>    Spinner    项资源
    2、获取下拉框的值
    3、简单适配器
        List<Map>    项资源

package com.example.t212_a06;

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.AutoCompleteTextView;
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 String[] data1;
    //声明一个适配器
    private ArrayAdapter<String> adapter1;
    private AutoCompleteTextView act_main_act1;


    private List<Option> data2;
    private ArrayAdapter<Option> adapter2;
    private Spinner sp_main_sp1;

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

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        act_main_act1 = this.findViewById(R.id.act_main_act1);
        sp_main_sp1 = this.findViewById(R.id.sp_main_sp1);
        sp_main_sp2 = this.findViewById(R.id.sp_main_sp2);

//        3.1 获取数据      httpclient          (输入前两个字或者以上将会提示)
        data1 = new String[]{ "愤怒的小鸟","愤怒的fpp", "汤姆猫", "落汤鸡", "牛牛", "哈巴狗", "神龙", "烤鸭","小象", "美人鱼", "九尾狐" };

//        3.2 创建适配器
        //上下文参数  ,  项资源文件   ,  要展示的数据    (三个参数)
        //通过上下文参数把当前的项资源文件解析成一个视图并且把数据绑定到视图里面
        adapter1 = new ArrayAdapter<String>(this,R.layout.act_main_item1,data1);

//        3.3 绑定适配器
        act_main_act1.setAdapter(adapter1);


        data2 = loadData2();
        adapter2 = new ArrayAdapter<Option>(this,R.layout.act_main_item1,data2);
        sp_main_sp1.setAdapter(adapter2);
        //设置下拉框选中的监听事件
        sp_main_sp1.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            //下拉框选中时调用的方法
            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                //获取被选中的项
                Option selectedItem = (Option) parent.getSelectedItem();
                //在界面上弹出
                Toast.makeText(MainActivity.this, selectedItem.getHtml(), Toast.LENGTH_SHORT).show();
            }
            //没选中时调用的方法
            @Override
            public void onNothingSelected(AdapterView<?> parent) {

            }
        });
        
        
        data3 = loadData3();
        //参数 :      上下文参数  ,  对应的项资源文件   ,  Map集合的键的List集合   ,   要展示的控件的id的List集合
        //   Map 集合的键   顺序要与    控件id对应
        adapter3 = new SimpleAdapter(this,data3,R.layout.sp_main_item2,new String[]{"name","image"},new int[]{R.id.tv_main_tv1,R.id.iv_main_item_iv1});
        sp_main_sp2.setAdapter(adapter3);

    }

    private List<Map<String,Object>> loadData3() {
        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> loadData2() {
        List<Book> list = new BookDAO().list();
        List<Option> list1 = new ArrayList<Option>();
        for(Book book : list){
            list1.add(new Option(book.getId().toString(),book.getName()));
        }
        return list1;
    }
}

   

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值