通过mysql获取数据用LISTVIEW表示,但是不点击文本框数据不会刷新出来搜索了以后也是这样,求助!!!!

这是布局图片说明

以下是代码

 new Thread(new Runnable() {
            @Override
            public void run() {
                try {
                    Class.forName("com.mysql.jdbc.Driver");
                    java.sql.Connection cn= DriverManager.getConnection("jdbc:mysql://cdb-bu2jncq1.gz.tencentcdb.com:10071/cangku1","root","xing1997");
                    String sql="select * from kehu";
                    Statement st=(Statement)cn.createStatement();
                    ResultSet rs=st.executeQuery(sql);
                    while (rs.next()){
                            Map<String, Object> map = new HashMap<String, Object>();
                            map.put("kh_name", rs.getString("kh_name"));
                            map.put("name", rs.getString("name"));
                            map.put("kh_tel", rs.getString("kh_tel"));
                            map.put("kh_add", rs.getString("kh_add"));
                            listitem.add(map);
                        }
                        cn.close();
                        st.close();
                        rs.close();

                }catch (ClassNotFoundException e) {
                    e.printStackTrace();
                } catch (SQLException e) {
                    e.printStackTrace();
                    Looper.prepare();
                    Toast.makeText(kh_lb.this, "连接数据库失败,网络异常!", Toast.LENGTH_LONG).show();
                    Looper.loop();
                }catch (Exception e){
                }
            }
        }).start();
        //更新界面
        //创建适配器
        // 第一个参数是上下文对象
        // 第二个是listitem
        // 第三个是指定每个列表项的布局文件
        // 第四个是指定Map对象中定义的两个键(这里通过字符串数组来指定)
        // 第五个是用于指定在布局文件中定义的id(也是用数组来指定)
        SimpleAdapter adapter = new SimpleAdapter(kh_lb.this
                , listitem
                , R.layout.kh_lb_item
                , new String[]{"kh_name","name","kh_tel","kh_add"}
                , new int[]{R.id.kh_name, R.id.name,R.id.kh_tel,R.id.kh_add});
        final ListView listView = findViewById(R.id.kh_list);
        listView.setAdapter(adapter);
        EditText sousuo=findViewById(R.id.sousuo);
        sousuo.setOnEditorActionListener(new TextView.OnEditorActionListener() {
            @Override
            public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
                if (actionId == EditorInfo.IME_ACTION_SEARCH) {//EditorInfo.IME_ACTION_SEARCH、EditorInfo.IME_ACTION_SEND等分别对应EditText的imeOptions属性
                    //TODO回车键按下时要执行的操作
                    ListView listView = findViewById(R.id.kh_list);
                    listitem.clear();
                    final EditText sousuo=findViewById(R.id.sousuo);
                    new Thread(new Runnable() {
                        @Override
                        public void run() {
                            try {
                                Class.forName("com.mysql.jdbc.Driver");
                                java.sql.Connection cn= DriverManager.getConnection("jdbc:mysql://XXXXXX/cangku1","root","XXXXX");
                                String sql="select * from kehu where kh_name='"+sousuo.getText().toString()+"' or name='"+sousuo.getText().toString()+"'";
                                Statement st=(Statement)cn.createStatement();
                                ResultSet rs=st.executeQuery(sql);
                                int i=0;
                                while (rs.next()){
                                    Map<String, Object> map = new HashMap<String, Object>();
                                    map.put("kh_name", rs.getString("kh_name"));
                                    map.put("name", rs.getString("name"));
                                    map.put("kh_tel", rs.getString("kh_tel"));
                                    map.put("kh_add", rs.getString("kh_add"));
                                    i=1;
                                    listitem.add(map);
                                }
                                    Looper.prepare();
                                    Toast.makeText(kh_lb.this, "正在搜索,请稍后!", Toast.LENGTH_LONG).show();
                                    if (i == 0){
                                        Toast.makeText(kh_lb.this, "当前不存在相关信息,请重新搜索!", Toast.LENGTH_LONG).show();
                                    }
                                cn.close();
                                st.close();
                                rs.close();
                                Looper.loop();
                            }catch (ClassNotFoundException e) {
                                e.printStackTrace();
                            } catch (SQLException e) {
                                e.printStackTrace();
                                Looper.prepare();
                                Toast.makeText(kh_lb.this, "连接数据库失败,网络异常!", Toast.LENGTH_LONG).show();
                                Looper.loop();
                            }catch (Exception e){
                            }
                        }
                    }).start();
                    //更新界面
                    //创建适配器
                    // 第一个参数是上下文对象
                    // 第二个是listitem
                    // 第三个是指定每个列表项的布局文件
                    // 第四个是指定Map对象中定义的两个键(这里通过字符串数组来指定)
                    // 第五个是用于指定在布局文件中定义的id(也是用数组来指定)
                    SimpleAdapter adapter = new SimpleAdapter(kh_lb.this
                            , listitem
                            , R.layout.kh_lb_item
                            , new String[]{"kh_name","name","kh_tel","kh_add"}
                            , new int[]{R.id.kh_name, R.id.name,R.id.kh_tel,R.id.kh_add});
                    listView.setAdapter(adapter);

                }
                return false;
            }
        });

求大佬帮忙!!!

1个回答

代码太乱了,不好,别人相帮你也不爱看。
获取完数据要注意刷新界面才行,搜一下adapter数据更新的相关办法吧。

qq_39402708
qq_39402708 好吧 谢谢大佬
11 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!