下拉列表实现精确查询与模糊查询(QQ群832021435 每天分享一个代码)

其实不论是什么操作,它的方法是最重要的,实现查询功能就要创建数据库,实现精确查询就要限定它的占位符,实现模糊查询加一个字符串。当我们明白之后它原来是这样简单,是的,重点是思维。
下拉列表的模糊查询,我们用开关语句实现?
 //下拉列表选择框的事件监听器
    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 like ?", 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;


精确查询与查询全部

//查询其中的某一个,

    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 cursor = dbOpenHelper.getReadableDatabase().query("dict", null, "word=?", new String[]{key}, null, null, null);
            Cursor c = dbOpenHelper.getReadableDatabase().query("dict", null, "detail=?", new String[]{key}, null, null, null);

            //创建ArrayList对象,用于保存查询输出的结果
            ArrayList<Map<String, String>> resultList = new ArrayList<Map<String, String>>();// 创建一个结果集 两个String类型
            while (cursor.moveToNext()) {
                //用while循环一直判断,当下一条为假时,我们的游标循环也就结束了
                //cursor.movetonext   定义一个游标 它的作用是将游标向下挪动一位 判断当前游标位置的下一条还有没有数据 如果有 就返回真 如果无 就返回假
                Map<String, String> map = new HashMap<>(); //新开辟一个map的集合空间
                // map.put("id",cursor.getString(0));
                map.put("word", cursor.getString(1));//在第一行输出姓名
                map.put("interpret", cursor.getString(2));//在第二行输出电话
                resultList.add(map);//在XML文件resultList 显示


                //定义一个simpleAdapter,供列表项使用
                SimpleAdapter simpleAdapter = new SimpleAdapter(MainActivity.this, resultList, R.layout.result_main,
                        new String[]{"word", "interpret"}, new int[]{
                        R.id.result_word, R.id.result_interpret});
                listView.setAdapter(simpleAdapter);
            }

            //创建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",cursor.getString(0));
                map.put("word", c.getString(1));//在第一行输出姓名
                map.put("interpret", c.getString(2));//在第二行输出电话
                r.add(map);//在XML文件resultList 显示
            }
            if (r == null || r.size() == 0) {
                Toast.makeText(MainActivity.this, "查无此人", Toast.LENGTH_LONG).show();
            } else {
                //定义一个simpleAdapter,供列表项使用
                SimpleAdapter simpleAdapter = new SimpleAdapter(MainActivity.this, r, R.layout.result_main,
                        new String[]{"word", "interpret"}, new int[]{
                        R.id.result_word, R.id.result_interpret});
                listView.setAdapter(simpleAdapter);
            }



        }
    });

    //查询所有的
    btnSearch.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 cursor = dbOpenHelper.getReadableDatabase().query("dict", null, null, null, null, null, null);
            //创建ArrayList对象,用于保存查询输出的结果
            ArrayList<Map<String, String>> resultList = new ArrayList<Map<String, String>>();// 创建一个结果集 两个String类型
            while (cursor.moveToNext()) {
                //用while循环一直判断,当下一条为假时,我们的游标循环也就结束了
                //cursor.movetonext   定义一个游标 它的作用是将游标向下挪动一位 判断当前游标位置的下一条还有没有数据 如果有 就返回真 如果无 就返回假
                Map<String, String> map = new HashMap<>(); //新开辟一个map的集合空间
                map.put("word", cursor.getString(1));//在第一行输出姓名
                map.put("interpret", cursor.getString(2));//在第二行输出电话
                resultList.add(map);//在XML文件resultList 显示
            }
            if (resultList == null || resultList.size() == 0) {
                Toast.makeText(MainActivity.this, "没有相关记录", Toast.LENGTH_LONG).show();
            } else {
                //定义一个simpleAdapter,供列表项使用
                SimpleAdapter simpleAdapter = new SimpleAdapter(MainActivity.this, resultList, R.layout.result_main,
                        new String[]{"word", "interpret"}, new int[]{
                        R.id.result_word, R.id.result_interpret});
                listView.setAdapter(simpleAdapter);
            }


        }
    });

猜你喜欢

转载自blog.csdn.net/jscsd226/article/details/81193292