在這段代碼中,我搜索了多個文本前綴。我有搜索薩欽。如何使用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) {
}
});
請嘗試我下面給出的答案,它的謂詞非常容易,比過濾器更快,你只需要複製和粘貼代碼 –