qq_39402708
2018-12-14 02:35通过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条回答
为你推荐
- android中listview如何动态加载数据
- java
- intellij-idea
- android-studio
- android
- eclipse
- 4个回答
- 在listView列表中点击歌曲,没有播放音乐,日志也打印不出来
- android
- 2个回答
- 大家帮我看下listview 异步加载数据 分页的问题!!!
- android
- 0个回答
- delphi listview添加第二行数据时出错!
- delphi
- 数据
- list
- 1个回答
- 运行listview有时显示不出数据,有时直接提示app stoped,求大神看看!
- 应用
- list
- 数据
- app
- 7个回答
换一换