gpt4 book ai didi

android - ListView 上的空文本过滤器

转载 作者:行者123 更新时间:2023-11-29 18:16:17 25 4
gpt4 key购买 nike

我有一个用于过滤的 ListView 和一个用于获取文本更改事件的 TextWatcher 的 EditText。在您从编辑文本中删除文本之前,一切都很好。然后筛选器仅保留为第一个字母,不会返回到无筛选器。

我做错了什么?这是 TextWatcher 的代码,我什至尝试禁用过滤器但没有效果。

EditText txtFilter = (EditText) this.findViewById(R.id.txtFilter);
txtFilter.addTextChangedListener(new TextWatcher() {
public void afterTextChanged(Editable s) {
if(s.length()==0)
{
lv.setTextFilterEnabled(false);
}
}

public void beforeTextChanged(CharSequence s, int start, int count, int after)
{
}

public void onTextChanged(CharSequence s, int start, int before, int count)
{
lv.setTextFilterEnabled(true);
lv.setFilterText(s.toString());
}
});

谢谢你的帮助

最佳答案

我认为 Adil Soomro 的回答很糟糕......我只看了一下 android 源代码和 setFilterText,它看起来像

public void setFilterText(String filterText) {
// TODO: Should we check for acceptFilter()?
if (mTextFilterEnabled && !TextUtils.isEmpty(filterText)) {
createTextFilter(false);
// This is going to call our listener onTextChanged, but we might not
// be ready to bring up a window yet
mTextFilter.setText(filterText);
mTextFilter.setSelection(filterText.length());
if (mAdapter instanceof Filterable) {
// if mPopup is non-null, then onTextChanged will do the filtering
if (mPopup == null) {
Filter f = ((Filterable) mAdapter).getFilter();
f.filter(filterText);
}
// Set filtered to true so we will display the filter window when our main
// window is ready
mFiltered = true;
mDataSetObserver.clearSavedState();
}
}
}

所以你可以看到它正在设置带过滤器的适配器......

您应该使用 lv.clearTextFilter(); 而不是 lv.setTextFilterEnabled(false);

关于android - ListView 上的空文本过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7926137/

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