【发布时间】:2017-07-10 09:52:26
【问题描述】:
我正在尝试为我的 recyclerView 实现搜索选项,用户可以在其中键入参考。但看起来每次我在搜索视图中键入一个字符时,我的 arrayList 都会重复,即使我尝试清除它,它也不起作用: 这是初始视图:
这是搜索错误
这是我的搜索代码
searchOnd.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
query.toLowerCase();
filtredList.clear();
for (Onduleur al:pvList){
if(al.getReference().matches(("(.*)("+query+").*"))){
filtredList.add(al);
}
}
if(filtredList.isEmpty()) {
layInver.setVisibility(View.GONE);
notfound.setVisibility(View.VISIBLE);
backSearch.setVisibility(View.VISIBLE);
errorNotFound.setText(R.string.onduleur_404_search);
}
else{
pvListC.addAll(pvList);
pvList.removeAll(pvList);
pvList.addAll(filtredList);
backSearch.setVisibility(View.VISIBLE);
inverterAdapter.notifyDataSetChanged();
recyclerView.setAdapter(inverterAdapter);
layInver.setVisibility(View.GONE);
slideDown= AnimationUtils.loadAnimation(getActivity().getApplicationContext(),R.anim.slide_up);
layInver.startAnimation(slideDown);
layInver.setVisibility(View.VISIBLE);}
filtredList=new ArrayList<Onduleur>();
return true;
}
@Override
public boolean onQueryTextChange(String query) {
query.toLowerCase();
filtredList.clear();
for (Onduleur al:pvList){
if(al.getReference().matches(("(.*)("+query+").*"))){
filtredList.add(al);
}
}
if(filtredList.isEmpty()) {
layInver.setVisibility(View.GONE);
notfound.setVisibility(View.VISIBLE);
backSearch.setVisibility(View.VISIBLE);
errorNotFound.setText(R.string.onduleur_404_search);
}
else{
pvListC.addAll(pvList);
pvList.removeAll(pvList);
pvList.addAll(filtredList);
backSearch.setVisibility(View.VISIBLE);
inverterAdapter.notifyDataSetChanged();
recyclerView.setAdapter(inverterAdapter);
layInver.setVisibility(View.GONE);
slideDown= AnimationUtils.loadAnimation(getActivity().getApplicationContext(),R.anim.slide_up);
layInver.startAnimation(slideDown);
layInver.setVisibility(View.VISIBLE);}
filtredList=new ArrayList<Onduleur>();
return true;
}
});
searchOnd.setOnCloseListener(new SearchView.OnCloseListener() {
@Override
public boolean onClose() {
notfound.setVisibility(View.GONE);
pvList.clear();
preparePVData();
inverterAdapter.notifyDataSetChanged();
recyclerView.setAdapter(inverterAdapter);
layInver.setVisibility(View.GONE);
slideDown= AnimationUtils.loadAnimation(getActivity().getApplicationContext(),R.anim.slide_up);
layInver.startAnimation(slideDown);
layInver.setVisibility(View.VISIBLE);
return false;
}
});
【问题讨论】:
标签: android search android-recyclerview