Android - ListView在setAdapter()后,getChildCount总是0的原因

来源:互联网 发布:php微信订餐系统源码 编辑:程序博客网 时间:2024/06/06 02:01

本文转载,来自http://www.cnblogs.com/linlf03/archive/2013/06/06/3120408.html;

使用ListView在setAdapter()后,对ListView的childView做一些操作。但是每次要取得childCount总是0。

原來setAdapter是非同步(asynchronous)。

只要在setAdapter()之后,加入post函式去更新ListView的ChildView即可。 

lv = (ListView)findViewById(R.id.list);
lv.setAdapter(adapter);
lv.post(new Runnable(){
    public void run(){
        // fileList为与adapter做连结的list总数            
        if (fileList.size()==lv.getChildCount()){ 
            //对ListView中的ChildView进行操作。。。      
        }  
 
    }
  
});


本段也是转载:

android listView.getCount 与 listView.getChildCount 区别

  ListView.getCount()(实际上是 AdapterView.getCount()) 返回的是其 Adapter.getCount() 返回的值。

也就是“所包含的 Item 总个数”。

  ListView.getChildCount()(ViewGroup.getChildCount) 返回的是显示层面上的“所包含的子 View 个数”。

当 ListView 中的 Item 比较少无需滚动即可全部显示时,二者是等价的;当 Item 个数较多需要滚动才能浏览全部的话, getChildCount() < getCount()

其中 getChildCount() 返回的是当前可见的 Item 个数

在使用listview.getchildcount=0,可是使用getcount替换,得到的结果不为0。

0 1
原创粉丝点击