このコードでは、複数のテキストを検索しています。私は検索sachinを持っています。originalListとrecyclerviewのfilterListをFilterを使って比較するには?
sachinはリストを表示しますが、クリックするとsachinが表示されず、アダプタのsaリストには表示されません。どのようなライブラリなしでそれを解決するには?
私はスペースを押して、今度はcharを削除すると、リストには表示されません。 例
テキストを検索すると、文字列が検索されています。この場合、saリストは表示されません。私はすべてのリストを表示して、そのすべてのリストを表示します。
検索は現在、今嚢
を検索し、リスト
サチンとサルダール
を示しsaの
検索に時間表示ですが、唯一の
をサチンリストに
をサルダールをDISPLYないSC
にのみ嚢をサチンを表示マイアダプタ
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();
}
}
Activityクラス
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) {
}
});
下記の私の答えを試してください。非常に簡単で述語は&フィルタより速く、コードをコピー&ペーストする必要があります –