我断断续续地用头撞这个已经两天了。
我尝试使用 getfilter.filter() 但它没有用。所以我创建了这个代码来搜索一个列表。它可以工作,但是当我删除一些字母时,列表会卡在最后一个结果上并且永远不会更新。
例如列表:你好,嗨,汉,独奏
当我输入'h'然后你好,你好,汉出现。
当我添加一个“e”时,这就是它的“他”只有你好显示
当我删除 e 时,han 和 hi 不再出现。
private TextWatcher filterTextWatcher = new TextWatcher() {
final ArrayList<String> finalItems = mItems;
@Override
public void afterTextChanged(Editable s) {
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before,
int count) {
ArrayList<String> searchedItems = retainsSearched(mItems, s.toString());
adapter.clear();
for (int i = 0; i < searchedItems.size(); i++) {
adapter.add(searchedItems.get(i));
}
adapter.notifyDataSetChanged();
}
};
public ArrayList<String> retainsSearched(ArrayList<String> mItems2, String term) {
ArrayList<String> stations = new ArrayList<String>();
for (int i = 0; i < mItems2.size(); i++) {
if (mItems2.get(i).toLowerCase().startsWith(term.toLowerCase())) {
stations.add(mItems2.get(i));
}
}
return stations;
}