Android Listview过滤器-退格过滤(删除)

Android Listview过滤器-退格过滤(删除),android,listview,Android,Listview,我有工作ListView过滤功能。这是我的需要: 当我没有结果时,我会显示空视图 当我的搜索为空时-ListView获取所有项目 当我开始键入ListView时,过滤效果良好 问题是,当我从搜索中逐字删除时,我没有过滤功能,因为我用结果填充了原始的列表视图。这里的问题显而易见。但是当我删除我的原始ListView被过滤和显示的单词时,我不知道如何解决这个问题 这是发布结果的方法: protected void publishResults(CharSequence constraint, F

我有工作
ListView
过滤功能。这是我的需要:

  • 当我没有结果时,我会显示空视图
  • 当我的搜索为空时-
    ListView
    获取所有项目
  • 当我开始键入
    ListView
    时,过滤效果良好
问题是,当我从搜索中逐字删除时,我没有过滤功能,因为我用结果填充了原始的
列表视图。这里的问题显而易见。但是当我删除我的原始
ListView
被过滤和显示的单词时,我不知道如何解决这个问题

这是发布结果的方法:

protected void publishResults(CharSequence constraint, FilterResults results) {
                if (constraint.length()>0 &&results.count == 0) {
                    _1History =(ArrayList<HistoryModel>) results.values;
                    notifyDataSetChanged();
                } else if(constraint.length()==0){
                    _1History = _1HistoryOriginalData;
                    notifyDataSetChanged();
                } else {
                    _1History = (ArrayList<HistoryModel>) results.values;
                    notifyDataSetChanged();
                }
            }
受保护的void publishResults(CharSequence约束、FilterResults结果){
if(constraint.length()>0&&results.count==0){
_1History=(ArrayList)results.values;
notifyDataSetChanged();
}else if(constraint.length()==0){
_历史=历史原始数据;
notifyDataSetChanged();
}否则{
_1History=(ArrayList)results.values;
notifyDataSetChanged();
}
}

这篇文章不是最新的,但是它确实出现在谷歌搜索中,所以我会尝试一下

我假设您遇到的问题是,一旦按下backspace,筛选结果不会更新?我真的看不到问题的根源,因为只显示publishResults方法,因此我将仅假设

当您开始在搜索字段中键入时,_1History数组开始过滤,缩短每个字符后的数组大小

 _1History =(ArrayList<HistoryModel>) results.values;

previousLength是一个全局变量。

您何时调用了
publishResult
方法?
if(previousLength > constraint.length()){
       _1History.clear();
       _1History.addAll(_1HistoryOriginalData);
       previousLength = constraint.length();
}else{
       previousLength = constraint.length();
}