android listview notifydatasetchanged 不刷新的解决办法

1.getCount()返回的size是0

2.布局问题

3.线程问题

 

 

我遇到的是2,由于将listview的高度设为0dp,而将其重量设为1试图独占剩余的空间。

但是由于不小心将一个布局中的控件高度写成了match_parent,导致了调用listview的notifydatasetchanged的时候,不走getview这个流程。

看了下源码,其实是由于listview的高度设置导致的,虽然可见,但是由于父类空间的的确确被完全占用,因此走getview的时候默认判了false,导致不刷新。

 

收集了一下,还有别的两种愿意,第一种自然不谈,没有数据本就不应该刷新。

但是第三种线程问题,主要是由于子线程无法进行view的刷新,比如说将ui更新操作全部放在子线程里面,使用handler或者runonuithread进行刷新,notifydatasetchanged的时候可能默认跳过。

posted @ 2017-11-02 10:57  Sample1994  阅读(2764)  评论(0编辑  收藏  举报