androidstudio下拉列表spinner的完美实现(QQ群832021435 每天分享一个代码)

很多网上的教程介绍的都是怎么实现下拉列表,我想着一步每个人都会,但是怎么实现它的监听机制呢?本文为大家详细讲解。
1.首先拉出来一个控件

<Spinner
    android:id="@+id/spinner"
    android:layout_width="wrap_content"
    android:layout_height="50dp"
    android:layout_x="5dp"
    android:layout_y="398dp"
    android:entries="@array/ctype"></Spinner>
   2.然后新建arrays.xml文件,里面的内容有:
   <?xml version="1.0" encoding="utf-8"?>
    <item>按ID查询</item>
    <item>按序号查询</item>
    <item>按公司名称查询</item>
    <item>按序列号查询</item>
    <item>按时间查询</item>


</string-array>
3.mainactivity里面的代码: Spinner spinner = (Spinner) findViewById(R.id.spinner);//获取下拉列表 //下拉列表选择框的事件监听器 spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
            String result = parent.getItemAtPosition(position).toString();//获取选项卡的值
            Toast.makeText(MainActivity.this,result,Toast.LENGTH_SHORT).show();//显示被选中的值

                switch (result){

                    case "按ID查询":
                        btnSearch_bit.setOnClickListener(new View.OnClickListener() {
                            @Override
                            public void onClick(View v) {
                                String key = etSearch.getText().toString();//获取要查询的姓名
                                //query("user",new String[]{"id","name"},"id=?",new String[]{"1"},null,null,null)
                                Cursor c = dbOpenHelper.getReadableDatabase().query("dict", null, "ID=?", new String[]{key}, null, null, null);
                                //创建ArrayList对象,用于保存查询输出的结果
                                ArrayList<Map<String, String>> r = new ArrayList<Map<String, String>>();// 创建一个结果集 两个String类型
                                while (c.moveToNext()) {
                                    //用while循环一直判断,当下一条为假时,我们的游标循环也就结束了
                                    //cursor.movetonext   定义一个游标 它的作用是将游标向下挪动一位 判断当前游标位置的下一条还有没有数据 如果有 就返回真 如果无 就返回假
                                    Map<String, String> map = new HashMap<>(); //新开辟一个map的集合空间
                                    map.put("_id", c.getString(0));
                                    map.put("ID", c.getString(1));
                                    map.put("xuliehao", c.getString(2));
                                    map.put("time", c.getString(3));
                                    map.put("name", c.getString(4));
                                    r.add(map);//在XML文件resultList 显示
                                    //定义一个simpleAdapter,供列表项使用
                                }
                                if (r == null || r.size() == 0) {
                                    Toast.makeText(MainActivity.this, "查无此数据", Toast.LENGTH_LONG).show();
                                } else {

                                    SimpleAdapter simpleAdapter = new SimpleAdapter(MainActivity.this, r, R.layout.result_main,
                                            new String[]{"_id", "ID", "xuliehao", "time", "name"}, new int[]{
                                            R.id.xuhao1, R.id.ID1, R.id.xuliehao1, R.id.time1, R.id.name1});
                                    listView.setAdapter(simpleAdapter);
                                }}});

                        break;
                    case "按序号查询":
                        btnSearch_bit.setOnClickListener(new View.OnClickListener() {
                            @Override
                            public void onClick(View v) {
                                String key = etSearch.getText().toString();//获取要查询的姓名
                                //query("user",new String[]{"id","name"},"id=?",new String[]{"1"},null,null,null)
                                Cursor c = dbOpenHelper.getReadableDatabase().query("dict", null, "_id=?", new String[]{key}, null, null, null);
                                //创建ArrayList对象,用于保存查询输出的结果
                                ArrayList<Map<String, String>> r = new ArrayList<Map<String, String>>();// 创建一个结果集 两个String类型
                                while (c.moveToNext()) {
                                    //用while循环一直判断,当下一条为假时,我们的游标循环也就结束了
                                    //cursor.movetonext   定义一个游标 它的作用是将游标向下挪动一位 判断当前游标位置的下一条还有没有数据 如果有 就返回真 如果无 就返回假
                                    Map<String, String> map = new HashMap<>(); //新开辟一个map的集合空间
                                    map.put("_id", c.getString(0));
                                    map.put("ID", c.getString(1));
                                    map.put("xuliehao", c.getString(2));
                                    map.put("time", c.getString(3));
                                    map.put("name", c.getString(4));
                                    r.add(map);//在XML文件resultList 显示
                                    //定义一个simpleAdapter,供列表项使用
                                }
                                if (r == null || r.size() == 0) {
                                    Toast.makeText(MainActivity.this, "查无此数据", Toast.LENGTH_LONG).show();
                                } else {

                                    SimpleAdapter simpleAdapter = new SimpleAdapter(MainActivity.this, r, R.layout.result_main,
                                            new String[]{"_id", "ID", "xuliehao", "time", "name"}, new int[]{
                                            R.id.xuhao1, R.id.ID1, R.id.xuliehao1, R.id.time1, R.id.name1});
                                    listView.setAdapter(simpleAdapter);
                                }}});

                        break;
                    case "按公司名称查询":

                        //查询其中的某一个,按公司名称
                        btnSearch_bit.setOnClickListener(new View.OnClickListener() {
                            @Override
                            public void onClick(View v) {
                                String key = etSearch.getText().toString();//获取要查询的姓名
                                //query("user",new String[]{"id","name"},"id=?",new String[]{"1"},null,null,null)
                                Cursor c = dbOpenHelper.getReadableDatabase().query("dict", null, "name=?", new String[]{key}, null, null, null);
                                //创建ArrayList对象,用于保存查询输出的结果
                                ArrayList<Map<String, String>> r = new ArrayList<Map<String, String>>();// 创建一个结果集 两个String类型
                                while (c.moveToNext()) {
                                    //用while循环一直判断,当下一条为假时,我们的游标循环也就结束了
                                    //cursor.movetonext   定义一个游标 它的作用是将游标向下挪动一位 判断当前游标位置的下一条还有没有数据 如果有 就返回真 如果无 就返回假
                                    Map<String, String> map = new HashMap<>(); //新开辟一个map的集合空间
                                    map.put("_id", c.getString(0));
                                    map.put("ID", c.getString(1));
                                    map.put("xuliehao", c.getString(2));
                                    map.put("time", c.getString(3));
                                    map.put("name", c.getString(4));
                                    r.add(map);//在XML文件resultList 显示
                                    //定义一个simpleAdapter,供列表项使用
                                }
                                if (r == null || r.size() == 0) {
                                    Toast.makeText(MainActivity.this, "查无此数据", Toast.LENGTH_LONG).show();
                                } else {

                                    SimpleAdapter simpleAdapter = new SimpleAdapter(MainActivity.this, r, R.layout.result_main,
                                            new String[]{"_id", "ID", "xuliehao", "time", "name"}, new int[]{
                                            R.id.xuhao1, R.id.ID1, R.id.xuliehao1, R.id.time1, R.id.name1});
                                    listView.setAdapter(simpleAdapter);
                                }}});
                        break;
                    case "按序列号查询":
                        btnSearch_bit.setOnClickListener(new View.OnClickListener() {
                            @Override
                            public void onClick(View v) {
                                String key = etSearch.getText().toString();//获取要查询的姓名
                                //query("user",new String[]{"id","name"},"id=?",new String[]{"1"},null,null,null)
                                Cursor c = dbOpenHelper.getReadableDatabase().query("dict", null, "xuliehao=?", new String[]{key}, null, null, null);
                                //创建ArrayList对象,用于保存查询输出的结果
                                ArrayList<Map<String, String>> r = new ArrayList<Map<String, String>>();// 创建一个结果集 两个String类型
                                while (c.moveToNext()) {
                                    //用while循环一直判断,当下一条为假时,我们的游标循环也就结束了
                                    //cursor.movetonext   定义一个游标 它的作用是将游标向下挪动一位 判断当前游标位置的下一条还有没有数据 如果有 就返回真 如果无 就返回假
                                    Map<String, String> map = new HashMap<>(); //新开辟一个map的集合空间
                                    map.put("_id", c.getString(0));
                                    map.put("ID", c.getString(1));
                                    map.put("xuliehao", c.getString(2));
                                    map.put("time", c.getString(3));
                                    map.put("name", c.getString(4));
                                    r.add(map);//在XML文件resultList 显示
                                    //定义一个simpleAdapter,供列表项使用
                                }
                                if (r == null || r.size() == 0) {
                                    Toast.makeText(MainActivity.this, "查无此数据", Toast.LENGTH_LONG).show();
                                } else {

                                    SimpleAdapter simpleAdapter = new SimpleAdapter(MainActivity.this, r, R.layout.result_main,
                                            new String[]{"_id", "ID", "xuliehao", "time", "name"}, new int[]{
                                            R.id.xuhao1, R.id.ID1, R.id.xuliehao1, R.id.time1, R.id.name1});
                                    listView.setAdapter(simpleAdapter);
                                }}});

                        break;
                    case "按时间查询":
                        btnSearch_bit.setOnClickListener(new View.OnClickListener() {
                            @Override
                            public void onClick(View v) {
                                String key = etSearch.getText().toString();//获取要查询的姓名
                                //query("user",new String[]{"id","name"},"id=?",new String[]{"1"},null,null,null)
                                Cursor c = dbOpenHelper.getReadableDatabase().query("dict", null, "time=?", new String[]{key}, null, null, null);
                                //创建ArrayList对象,用于保存查询输出的结果
                                ArrayList<Map<String, String>> r = new ArrayList<Map<String, String>>();// 创建一个结果集 两个String类型
                                while (c.moveToNext()) {
                                    //用while循环一直判断,当下一条为假时,我们的游标循环也就结束了
                                    //cursor.movetonext   定义一个游标 它的作用是将游标向下挪动一位 判断当前游标位置的下一条还有没有数据 如果有 就返回真 如果无 就返回假
                                    Map<String, String> map = new HashMap<>(); //新开辟一个map的集合空间
                                    map.put("_id", c.getString(0));
                                    map.put("ID", c.getString(1));
                                    map.put("xuliehao", c.getString(2));
                                    map.put("time", c.getString(3));
                                    map.put("name", c.getString(4));
                                    r.add(map);//在XML文件resultList 显示
                                    //定义一个simpleAdapter,供列表项使用
                                }
                                if (r == null || r.size() == 0) {
                                    Toast.makeText(MainActivity.this, "查无此数据", Toast.LENGTH_LONG).show();
                                } else {

                                    SimpleAdapter simpleAdapter = new SimpleAdapter(MainActivity.this, r, R.layout.result_main,
                                            new String[]{"_id", "ID", "xuliehao", "time", "name"}, new int[]{
                                            R.id.xuhao1, R.id.ID1, R.id.xuliehao1, R.id.time1, R.id.name1});
                                    listView.setAdapter(simpleAdapter);
                                }}});

                        break;
                        default:
                            btnSearch_bit.setOnClickListener(new View.OnClickListener() {
                                @Override
                                public void onClick(View v) {
                                    String key = etSearch.getText().toString();//获取要查询的姓名
                                    //query("user",new String[]{"id","name"},"id=?",new String[]{"1"},null,null,null)
                                    Cursor c = dbOpenHelper.getReadableDatabase().query("dict", null, "ID=?", new String[]{key}, null, null, null);
                                    //创建ArrayList对象,用于保存查询输出的结果
                                    ArrayList<Map<String, String>> r = new ArrayList<Map<String, String>>();// 创建一个结果集 两个String类型
                                    while (c.moveToNext()) {
                                        //用while循环一直判断,当下一条为假时,我们的游标循环也就结束了
                                        //cursor.movetonext   定义一个游标 它的作用是将游标向下挪动一位 判断当前游标位置的下一条还有没有数据 如果有 就返回真 如果无 就返回假
                                        Map<String, String> map = new HashMap<>(); //新开辟一个map的集合空间
                                        map.put("_id", c.getString(0));
                                        map.put("ID", c.getString(1));
                                        map.put("xuliehao", c.getString(2));
                                        map.put("time", c.getString(3));
                                        map.put("name", c.getString(4));
                                        r.add(map);//在XML文件resultList 显示
                                        //定义一个simpleAdapter,供列表项使用
                                    }
                                    if (r == null || r.size() == 0) {
                                        Toast.makeText(MainActivity.this, "查无此数据", Toast.LENGTH_LONG).show();
                                    } else {

                                        SimpleAdapter simpleAdapter = new SimpleAdapter(MainActivity.this, r, R.layout.result_main,
                                                new String[]{"_id", "ID", "xuliehao", "time", "name"}, new int[]{
                                                R.id.xuhao1, R.id.ID1, R.id.xuliehao1, R.id.time1, R.id.name1});
                                        listView.setAdapter(simpleAdapter);
                                    }}});

                            break;
                }

        }//方法结束

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

        }
    });//下拉事件触发结束

各位小伙伴,是不是很激动,别忘了加群,多多支持!
看图就知道有多好了

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值