我有一个搜索视图,我想先显示历史记录或一些建议
为了测试我在搜索视图获得焦点时调用了loadHistory方法,但最初没有显示它。
请有人帮忙吗...
代码// loadHistory在OnFocusChanged和OnQueryText
上调用public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater menuInflater = getMenuInflater();
menuInflater.inflate(R.menu.searchmenu, menu);
switchItem = menu.findItem(R.id.BTN_searchSet);
final MenuItem searchItem = menu.findItem(R.id.menu_search);
searchItem.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
searchView = (SearchView) menu.findItem(R.id.menu_search).getActionView();
searchUser = true;
searchView.setIconified(false);
sACTV = (AutoCompleteTextView) searchView.findViewById(R.id.search_src_text);
sACTV.setThreshold(1);
searchView.clearFocus();
searchView.setOnQueryTextFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
loadHistory();
}
});
searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String s) {
input.put("search", s);
if (searchUser) {
sdbr.execSQL("delete from profilehistory where search = '" + s + "'");
sdbw.execSQL("insert into profilehistory (search, datetime) values ('" + s + "', datetime())");
searchprofile();
} else {
history = "";
sdbr.execSQL("delete from hashhistory where search = '" + s + " '");
sdbw.execSQL("insert into hashhistory (search, datetime) values ('" + s + "', datetime())");
searchhash(false);
}
return true;
}
@Override
public boolean onQueryTextChange(String s) {
loadHistory();
return false;
}
});
return true;
}
private void loadHistory() {
String str = searchView.getQuery().toString();
Log.d("test", "load //"+str);
Cursor c;
if (searchUser) {
if(str.length()==0) c = sdbr.rawQuery("select _id, search from profilehistory order by datetime desc", null);
else {
c = sdbr.rawQuery("select _id, search from profilehistory where search like '" + str + "%' order by datetime desc", null);
}
} else {
if(str.length()==0) c = sdbr.rawQuery("select _id, search from hashhistory order by datetime desc", null);
else {
c = sdbr.rawQuery("select _id, search from hashhistory where search like '" + str + "%' order by datetime desc", null);
}
}
SearchManager manager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
searchView.setSearchableInfo(manager.getSearchableInfo(getComponentName()));
searchView.setSuggestionsAdapter(new HistoryAdapter(this, c));
if(str.length()==0) {
Log.d("test", "showDropDown");
sACTV.showDropDown();
}
}
The logs//
1. At first, gained touch which does call the onBind methods but does not show the suggestions
D/test: load //
D/test: showDropDown
D/AbsListView: Get MotionRecognitionManager
D/test: Asdfg
D/test: Asdf
D/test: Asd
D/test: As
D/test: A
2. typed A
works all right
D/test: load //A
D/AbsListView: Get MotionRecognitionManager
D/test: Asdfg
D/test: Asdf
D/test: Asd
D/test: As
D/test: A
D/AbsListView: unregisterIRListener() is called
D/test: Asdfg
D/test: Asdf
D/test: Asd
D/test: As
D/test: A
D/AbsListView: unregisterIRListener() is called
D/AbsListView: unregisterIRListener() is called
D/AbsListView: unregisterIRListener() is called