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

qq_39402708 2018-12-14 10:40:35
这是布局
下面是代码

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;
}
});

求助 求教育
...全文
388 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
leetow2006 2018-12-15
  • 打赏
  • 举报
回复
安卓也可以与MySQL连接吗?
qq_39402708 2018-12-14
  • 打赏
  • 举报
回复
大佬,我是刚接触这个东西,你有例子不给我一个 多谢了 不是很会 这个连接数据库方法我也是百度的
雕·不懒惰 2018-12-14
  • 打赏
  • 举报
回复
数据库是耗时操作,为什么不用Handler,查询获取数据之后,发送message,handler接收message再更新UI
王能 2018-12-14
  • 打赏
  • 举报
回复
另外子线程add数据在比较耗时的情况下可能会引起崩溃
王能 2018-12-14
  • 打赏
  • 举报
回复
你虽然修改了list的数据单没有调用notifydatesatechange。你需要在sql里的listitem.add完成后回到ui线程然后调用adapter的notifyDateSateChanged

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧