做andorid开发,遇到了一个很奇怪的现象。listView.setEmptyView()有效果,但expandableListView.setEmptyView(View view)却没有效果。两者都是继承了AdapterView,一直让人百思不得其解。于是google了一下,几乎大部分的文章都在强调,你的emptyView没有在当前的View hibernate下,所以setEmptyView()无效。但是我的expandableListView的emptyView和listView的emptyView一样,都是在同一层次上,却还是无效。
后来没有办法,调试代码,看看到底是哪里出了问题。一看吓一跳,发现setEmptyView(View view)的方法,根本就没有跳转到AdapterView的相应的方法中去,再次对比listView和expandableListView的不同,发现两者也就是Adapter不一样了。到这儿,终于确定问题出在哪儿了。expandbleListView中有一个isEmpty()的方法,默认是return false;将其重写:
@Override
public boolean isEmpty() {
if (getGroupCount() == 0) {
return true;
} else {
return false;
}
}
当getGroupCount()==0的时候,返回true,其它返回false就可以了。原来犯了这么简单的错误,还折腾了这么久,特此以记之。
网友评论