0
我已經使用recyclerview實現了searchView。看起來很好,但有時(完全隨機)不要在設備或工具欄中的按下按鈕之後刪除搜索視圖,並且這仍然與主屏幕疊加。Searchview在執行搜索後不會刪除recyclerview的視圖
我附截圖看到的行爲
一些幫助將是aprreciate!
這是我在搜索查看代碼:
@Override
public void onCreateOptionsMenu (Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.menu_search, menu);
MenuItem item = menu.findItem(R.id.action_search);
final SearchView sv = new SearchView(((MainActivity) getActivity()).getSupportActionBar().getThemedContext());
MenuItemCompat.setShowAsAction(item, MenuItemCompat.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW | MenuItemCompat.SHOW_AS_ACTION_IF_ROOM);
MenuItemCompat.setActionView(item, sv);
sv.setQueryHint(getString(R.string.type_search));
sv.setIconifiedByDefault(false);
sv.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
return false;
}
@Override
public boolean onQueryTextChange(String newText) {
cursorFilter = !TextUtils.isEmpty(newText) ? newText : null;
getLoaderManager().restartLoader(0, null, AllContacts.this);
return false;
}
});
super.onCreateOptionsMenu(menu,inflater);
}
這是我做的光標搜索:你必須創建一個包含的結果新的POJO類
@Override
public Loader<Cursor> onCreateLoader(int id, Bundle args) {
if (cursorFilter != null) {
baseUri = Uri.withAppendedPath(ContactsContract.Contacts.CONTENT_FILTER_URI, Uri.encode(cursorFilter));
} else {
baseUri = ContactsContract.Contacts.CONTENT_URI;
}
String select = "((" + ContactsContract.Contacts.DISPLAY_NAME + " NOTNULL) AND (" + ContactsContract.Contacts.HAS_PHONE_NUMBER + " != 0))";
return new CursorLoader(getActivity(), baseUri, PROJECTION, select, null, ContactsContract.Contacts.DISPLAY_NAME + " COLLATE LOCALIZED ASC");
}
嗨,你能爲我提供的如何做到這一點一些代碼,請。我在android –
中的新東西是沒有辦法清理屏幕之前,在這裏做一個新的搜索?如果(cursorFilter!= null){baselri = Uri.withAppendedPath(ContactsContract.Contacts.CONTENT_FILTER_URI,Uri.encode(cursorFilter)); } else { baseUri = ContactsContract.Contacts.CONTENT_URI; } –
您可以在將結果添加到列表之前清除列表 –