在这段代码中,我搜索了多个文本前缀。我有搜索萨钦。如何使用Filter将recyclerview中的originalList与filterList进行比较?
sachin显示列表,但点击后退sachin到sac不显示在适配器上的列表。如何解决它没有任何图书馆?
当我按回空格并删除一个字符这次没有列出不显示。 例子
假设我有搜索sachin到文本更改sachin到囊。在这种情况下不显示一个列表。我已经清楚所有列表中的情况显示所有列表。
搜索SA显示列表
萨钦和萨达尔
现在搜索囊
现在显示萨钦
只搜索囊,以SC
这一次只能显示萨钦
不DISPLY的萨达尔列表
我的适配器
private class ItemFilter extends Filter {
protected FilterResults performFiltering(CharSequence constraint) {
FilterResults results = new FilterResults();
if (constraint != null && constraint.length() > 0) {
ArrayList<Build> buildlist = new ArrayList<Build>();
for (int i = 0; i < buildList.size(); i++) {
if ((buildList.get(i).getName().toUpperCase())
.contains(constraint.toString().toUpperCase())) {
Build babydata = new Build(buildList.get(i).getImages(), buildList.get(i).getName());
buildlist.add(babydata);
}
}
results.count = buildlist.size();
results.values = buildlist;
} else {
results.count = buildList.size();
results.values = buildList;
}
return results;
}
@Override
protected void publishResults(CharSequence constraint,
FilterResults results) {
buildList = (ArrayList<Build>) results.values;
notifyDataSetChanged();
}
}
活动等级
EditText editTxt = (EditText) findViewById(R.id.search);
editTxt.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
if (s.length() <= 0) {
Log.d("jay", "s.length() <= 0" + s.toString());
buildList.clear();
buildList.addAll(buildListCopy);
recyclerView.setAdapter(null);
buildCustomAdapter = new BuildCustomAdapter(buildList);
recyclerView.setAdapter(buildCustomAdapter);
} else {
buildCustomAdapter.getFilter().filter(s.toString());
}
Log.d("jay", "mobisharnam" + s.toString());
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void afterTextChanged(Editable s) {
}
});
请尝试我下面给出的答案,它的谓词非常容易,比过滤器更快,你只需要复制和粘贴代码 –