今天做项目遇到一个一键删除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了。
版权声明:本文为博主原创文章,未经博主允许不得转载。
时间: 2024-10-22 11:49:47