qq_39402708 2018-12-14 02:35 采纳率: 0%
浏览 444

通过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条回答 默认 最新

  • Victor刘 2018-12-14 02:42
    关注

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

    评论

报告相同问题?

悬赏问题

  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!