剔除ListView中所有Item项

删除ListView中所有Item项

今天做项目遇到一个一键删除ListView中所有列表项的需求,这里自己记录一下。


刚开始的想法是将设置一个空的Adapter,让后将空的Adapter赋给ListView,但后来想想这样太麻烦了,就去寻找了一下官方时候给了这样的方法。
别说,还真的有类似的方法!
ViewGroup类下面有一个removeAllViews()方法,看名字就很像,试了一下竟然不行!
报了这样的错误:

removeAllViews() is not supported in AdapterView

竟然说这个不是给AdapterView们用的,种族歧视啊,有木有!
怀着这样不忿的心态,我试图寻找一个能用的方法,果然,被我发现了她——同样是ViewGroup类中的方法,名字也很相似——removeAllViewsInLayout()。


俗话说龙生九子各有不同,虽然这两个方法是亲兄妹,但后者还是很厚道的,AdapterView可以与之愉快地玩耍。
使用后一测试,发现虽然没报错,但所有的Item还好好地躺在ListView中,一点击Item才会全部消失。
其实,这是由于View没有刷新的问题,removeAllViewsInLayout()之后接着调用postInvalidate()来刷新下。

    mList.removeAllViewsInLayout();
    mList.postInvalidate();

这样,就OK了。