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

一、 高级控件使用步骤
1 、获取数据
2 、创建适配器
3 、绑定适配器

二、自动提示文本框
1 、AutoCompleteTextView(单一提示)
android:completionThreshold=”1”

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

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

public class MainActivity extends AppCompatActivity {
//    自动补全
    private String[] data1;
    private ArrayAdapter<String> adapter1;
    private AutoCompleteTextView act_main_act1;
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        act_main_act1=this.findViewById(R.id.act_main_act1);
//         3.1 获取数据
        data1=new String[] { "愤怒的小鸟", "汤姆猫", "落汤鸡", "牛牛", "哈巴狗", "神龙", "烤鸭",
                "小象", "美人鱼", "九尾狐" };
//        3.2 创建适配器
        adapter1=new ArrayAdapter<String>(this,R.layout.act_main_item1,data1);
//        3.3 绑定适配器
        act_main_act1.setAdapter(adapter1);
   }
}  

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

四、下拉框 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

public class MainActivity extends AppCompatActivity {
//    下拉框
    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);
        sp_main_sp1=this.findViewById(R.id. sp_main_sp1);
        sp_main_sp2=this.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<?> adapterView, View view, int position, long id) {
                Option selectedItem= (Option) adapterView.getSelectedItem();
                Toast.makeText(MainActivity.this,selectedItem.getHtml(), Toast.LENGTH_SHORT).show();
            }

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

            }
        });

//   下拉图片
        data3=loadData3();
        adapter3=new SimpleAdapter(this,data3,R.layout.sp_main_item2,new String[]{"name","image"},new int[]{R.id.tv_main_item_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> optionList=new ArrayList<>();
       for (Book book:list){
           optionList.add(new Option(book.getId()+"",book.getName()));
       }
       return optionList;
    }
}

猜你喜欢

转载自blog.csdn.net/cg_9647/article/details/82709591
今日推荐