Android的高级控件(自动提示文本框与下拉列表)

本文介绍了Android中高级控件与常用控件的区别,重点讲解了适配器的种类,如ArrayAdapter、SimpleAdapter和自定义适配器。详细阐述了高级控件的使用步骤,包括获取数据、创建适配器和绑定适配器。针对自动提示文本框,分别讨论了AutoCompleteTextView和MultiAutoCompleteTextView,并提供了实例。同时,深入探讨了下拉框(Spinner)的使用方法。最后,通过简单适配器的实例及事件监听AdapterView.OnItemSelectedListener的应用,帮助读者更好地理解和掌握Android高级控件的实践操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、高级控件与常用控件的区别:是否使用适配器

二、适配器

1、种类
①、数组适配器 ArrayAdapter
      new ArrayAdapter<String>(this,R.layout.actv_style, names);

②、简单适配器 SimpleAdapter
      也叫“并不简单的简单适配器”

③、自定义适配器

2、作用: 桥梁、展示

三、高级控件使用步骤:①获取数据 、②创建适配器 、③绑定适配器

四、自动提示文本框

1、种类:

①单一提示【 AutoCompleteTextView】 
②多次提示【MultiAutoCompleteTextView】

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

2、实例:

activity_main_xml的布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"
    android:orientation="vertical"
    tools:context=".MainActivity">

   <AutoCompleteTextView
       android:id="@+id/act_main_act1"
       android:layout_width="match_parent"
       android:layout_height="60dp" />

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

配置MainActivity.java方法:

package com.example.t212_a07;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
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[] date1;
    //声明一个适配器
    private ArrayAdapter<String> adapter1;
    //声明提示框空间
    private AutoCompleteTextView act_main_act1;

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


    //①获取数据
    date1 = new String[]{"愤怒的小鸟", "汤姆猫", "落汤鸡", "牛牛", "哈巴狗", "神龙", "烤    
    鸭", "小象", "美人鱼", "九尾狐"};
    //②创建适配器
    adapter1 = new ArrayAdapter<>(this, R.layout.act_main_item1, date1);
    //③绑定适配器
    act_main_act1.setAdapter(adapter1);
  }

五、下拉框(Spinner)

1、实例:

素材(在MainActivity.java里添加) :

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 };

activity_main_xml的布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"
    android:orientation="vertical"
    tools:context=".MainActivity">

   <AutoCompleteTextView
       android:id="@+id/act_main_act1"
       android:layout_width="match_parent"
       android:layout_height="60dp" />
       <Spinner
           android:id="@+id/sp_main_sp2"
           android:layout_width="match_parent"
           android:layout_height="wrap_content">
       </Spinner>

配置MainActivity.java方法:

package com.example.t212_a07;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
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 List<Option> data2;
    //声明适配器
    private ArrayAdapter<Option> adapter2;
    //声明下拉框
    private Spinner sp_main_sp1;
     @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        sp_main_sp2 = findViewById(R.id.sp_main_sp2);

        //获取数据源
        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_LONG).show();
       }
            @Override
            public void onNothingSelected(AdapterView<?> parent) {
                       
            }
        });


  //获取数据源的过程(下拉框)
    private List<Option> loadData2() {
        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;
        }
   }

六、简单适配器的实例:

activity_main_xml的布局:

简单适配器的activity_main_xml参考下拉框的activity_main_xml

配置MainActivity.java方法:

package com.example.t212_a07;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
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 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);

        data3 = loadData3();
        adapter3 = new SimpleAdapter(this,data3,R.layout.sp_main_itme2,new String[] 
        {"image","name"},new int[]{R.id.iv_main_item_iv1,R.id.tv_main_item_tv1});
        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);
            //调试
           // Log.i("test","----------"+map.get("name"));
        }
        return mapList;
    }
}

七、事件监听

AdapterView.OnItemSelectedListener

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值