Android中Listview重复显示搜索结果

最近做毕设,在写搜索这一功能模块的时候发现一个问题,我是从数据库将美食信息搜索出来并显示在ListView中。写完之后,测试的时候发现虽然搜索结果能够正常显示,但是当进行下一次搜索的时候,上一次的搜索结果还会显示,从网上搜了很多,但是大部分都是说清空ListView,问题就是如果选择清空ListView的话,一方面如果不判断就清空的话,你会发现搜索结果就不会显示出来。另一方面,如果判断ListView是否为空,再清空的话,结果一样无法显示。
我想原因是ListView只是一个控件。不应该对其进行判空,而应该先对填充其中的数据进行判断是否为空。如果不为空,先清空,然后再进行填充数据和显示。下面贴上我的代码。
我首先是声明了一个ArrayList来存放从数据库中取出的数据,同时也是ListView的数据源:

1
ArrayList<Map<String, Object>> SearchResults = new ArrayList<Map<String, Object>>();

ArrayList中是一个Map键值对类型的元素,用于存放数据库中相应字段的值,然后就是关键的判断了:

1
2
3
if(!(SearchResults.isEmpty())){
SearchResults.removeAll(SearchResults);
}

这个就会先判断ArrayList中的数据是否为空,如果不为空,就代表上一次搜索中的数据还在里面,我们就先进行一个清空操作,那样在进行下一次操作的时候就不会出现问题了。其它从数据库中获取,已经使用适配器显示到ListView中的代码网上有很多,我就不贴出来了,如果有需要的或者有什么问题的,可以留言