gpt4 book ai didi

java - 当在我的文本框中输入内容时,我的 ListView 过滤效果很好。但是,当我删除一些字母(退格键)时,列表不会更新

转载 作者:行者123 更新时间:2023-12-01 15:00:10 28 4
gpt4 key购买 nike

两天来我一直断断续续地用头撞这个。

我尝试使用 getfilter.filter() 但它不起作用。所以我创建了这段代码来搜索列表。它有效,但是当我删除一些字母时,列表会卡在最后一个结果并且永远不会更新。

例如列表:hello、hi、han、solo

当我输入“h”时,就会出现 hello、hi 和 han。

当我添加一个“e”时,它的“he”就只显示 hello

当我删除 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;
}

最佳答案

when i type 'h' then hello, hi, and han show up. when i add an 'e' so thats its 'he' only hello shows when i delete the e, han and hi do not come up again.

这很可能发生,因为您在 TextWatcher 中使用的 mItems 列表是支持适配器的列表,因此可以通过修改它(当过滤和清除/在适配器中添加项目)您总是会减少适配器中可用项目的数量,即每次过滤列表时“看到”的项目。

相反,尝试在适配器中创建初始项目(mItems 列表)的副本,并始终通过测试该副本中的项目来进行过滤(但不要修改它,只需添加与适配器匹配的项目)。

同样,您应该使用 getFilter() 方法。

编辑:

ArrayList<String> searchedItems = retainsSearched(s.toString()); 
// ...

public ArrayList<String> retainsSearched(ArrayList<String term) {
ArrayList<String> stations = new ArrayList<String>();
for (int i = 0; i < copyList.size(); i++) {
if (copyList.get(i).toLowerCase().startsWith(term.toLowerCase())) {
stations.add(copyList.get(i));
}
}
}

关于java - 当在我的文本框中输入内容时,我的 ListView 过滤效果很好。但是,当我删除一些字母(退格键)时,列表不会更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13776886/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com