enter image description here在通过searchView.setOnQueryTextListener new SearchView.OnQueryTextListener
过滤后,我无法使用搜索窗口小部件搜索列表碎片。
代码:::
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
setHasOptionsMenu(true);
adapter = new ArrayAdapter<String>(
getActivity(), android.R.layout.simple_list_item_activated_1,
hymns.HYMN_HEAD);
setListAdapter(adapter);
View detailsFrame = getActivity().findViewById(R.id.details);
mDuelPane = detailsFrame!= null && detailsFrame.getVisibility() == View.VISIBLE;
if(savedInstanceState != null){
mCurCheckPosition = savedInstanceState.getInt("curChoice", 0);
}
if(mDuelPane){
getListView().setChoiceMode(ListView.CHOICE_MODE_SINGLE);
showDetails(mCurCheckPosition);
}
};
searchView.setOnQueryTextListener new SearchView.OnQueryTextListener(){
@Override
public boolean onQueryTextSubmit(String query) {
return true;
}
@Override
public boolean onQueryTextChange(String newText) {
adapter.getFilter().filter(query); return true;
}
}
过滤器有效但单击搜索的项目时,它不会返回详细信息活动中的索引true位置。例如,如果一个项目在原始列表视图中位于第77位,并且您尝试通过过滤进行搜索,并且在过滤之后,所述第77项现在是过滤器的数字1位置,当单击时,而不是返回第77个详细活动的位置,它返回原始列表视图的头号细节。 我希望你能帮助我,因为我是一名婴儿程序员。谢谢先生
答案 0 :(得分:0)
您需要使用新过滤的适配器更新列表
@Override
public boolean onQueryTextChange(String newText) {
adapter.getFilter().filter(query);
setListAdapter(adapter);
return true;
}