我使用searchview和listview搭建了一个搜索关键词的搜索框,但是搜索框并不能实现搜素功能,listview中没有任何显示内容,以下是代码svselect.setOnQueryTextListener(new SearchView.OnQueryTextListener() { @Override public boolean onQueryTextSubmit(String query) { selectquery(query); return true; } @Override public boolean onQueryTextChange(String newText) { if (!TextUtils.isEmpty(newText)){ lvselect.clearTextFilter(); }else{ lvselect.setFilterText(newText); } return true; } }); //监听listview控件 lvselect.setOnItemClickListener(new AdapterView.OnItemClickListener() { @SuppressLint("Range") @Override public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) { secur.moveToPosition(i);//移动到指定位置 Intent intents=new Intent(SeleActivity.this,Show.class); //添加要传递的数据,将一个活动里的数据传递到第二个活动中,ID为int型,content和time是string intents.putExtra(DButil.ID,secur.getInt(secur.getColumnIndex(DButil.ID))); intents.putExtra(DButil.CONTENT,secur.getString(secur.getColumnIndex(DButil.CONTENT))); intents.putExtra(DButil.TIME,secur.getString(secur.getColumnIndex(DButil.TIME))); startActivity(intents); finish(); } });
时间: 2024-02-10 08:20:36 浏览: 116
Sortlistview带搜索框得listview
可能是因为在 onQueryTextChange 方法中,你设置了 lvselect 的过滤文本,但是没有更新显示内容。可以尝试在 selectquery 方法中更新 lvselect 的 adapter 以及显示内容,如下:
private void selectquery(String query) {
Cursor cursor = db.rawQuery("select * from note where content like ? or time like ?", new String[]{"%" + query + "%", "%" + query + "%"});
adapter.changeCursor(cursor);
lvselect.setAdapter(adapter);
}
其中 adapter 为你使用的 CursorAdapter,需要在 onCreate 方法中初始化并设置给 lvselect,如下:
adapter = new SimpleCursorAdapter(
this,
R.layout.item_layout,
null,
new String[]{DButil.CONTENT, DButil.TIME},
new int[]{R.id.tv_content, R.id.tv_time},
CursorAdapter.FLAG_REGISTER_CONTENT_OBSERVER
);
lvselect.setAdapter(adapter);
这样,当用户输入搜索关键词并提交时,会根据关键词查询数据库,并将查询结果更新到 adapter 中,然后再将 adapter 设置给 lvselect,从而更新显示内容。
阅读全文