【发布时间】:2018-09-12 12:02:34
【问题描述】:
好的,所以我制作了用于搜索药物并在列表视图中显示项目的模块,我在这里使用 JDBC。主要问题是当我在搜索视图中放置下划线_ 时,它会导致列表视图项重复自身的错误。
根据我的观察;此错误仅在同时插入下划线时发生,但如果以较慢的间隔按下,它无论如何都不会重复项目。
这是 SearchView 上没有任何内容时的样子:
这是下划线放置在较慢的间隔
即使列表视图中不存在下划线它仍然会显示它,但是当我添加更多下划线时,它们开始从底部开始一个接一个地消失。
这是主要问题;当同时放置下划线时
这是我在 AsyncTask 中搜索的代码
private class searchUnfiltered extends AsyncTask<String, String, String> {
String z = "";
String fromSearchView = sv.getQuery().toString().trim();
boolean isSuccess = false;
String about;
@Override
protected void onPreExecute() {
myArrayList2.clear();
myArrayList.clear();
super.onPreExecute();
}
@Override
protected String doInBackground(String... params) {
try {
Connection con = connectionClass.CONN();
if (con == null) {
z = "Please check your internet connection";
} else {
String querySearch = "select name from medicines where name like '%"+ fromSearchView +"%' order by name ASC";
Statement stmt1 = con.createStatement();
ResultSet rs1 = stmt1.executeQuery(querySearch);
if(rs1 != null) {
while (rs1.next()) {
myArrayList2.add(rs1.getString("name"));
}
}
}
} catch (Exception ex) {
isSuccess = false;
z = "Exceptions" + ex;
}
return z;
}
@Override
protected void onPostExecute(String s) {
if(!isSuccess && !z.equals("")) {
Toast.makeText(getBaseContext(), z, Toast.LENGTH_LONG).show();
}
ListAdapter listAdapter = new ArrayAdapter<>(MedicineSearch.this, android.R.layout.simple_list_item_1, myArrayList2);
lv.setAdapter(listAdapter);
}
}
每当搜索视图中的值发生更改时,searchUnfiltered 就会被触发,请告诉我我所做的是否有效,或者您有什么更好的建议,这将非常有帮助。
【问题讨论】:
-
我认为问题出在搜索查询中。试试下面的查询。 String querySearch = "select DISTINCT name from drug where name like '%"+ fromSearchView +"%' GROUP BY name ORDER BY name ASC";
-
是的,但即使我的列表项中不存在单引号,它仍会返回任何内容
标签: android mysql jdbc android-asynctask