在Listview&中设置可见性的问题BaseAdapter

时间:2010-03-19 20:03:16

标签: android listview adapter

我正在开发一个自动增长列表视图。每次我打电话之前

    mAdapter.notifyDataSetChanged();

我使用进度圈切换列表中的最新项目。

    /**
    * displays a progress banner instead of the last item.
    * @param reload boolean
    */
    protected void showReloadView(boolean reload){
         View item = mListView.getChildAt(onLastItem);
         //View item = mListView.getAdapter().getView(onLastItem, null, null);
         content = item.findViewById(id.itemContent);
         loading = item.findViewById(id.itemLoading);
         if(reload){
           content.setVisibility(View.GONE);
           loading.setVisibility(View.VISIBLE);
        }else{
           content.setVisibility(View.VISIBLE);
           loading.setVisibility(View.GONE);
   }

我的问题在于,我正在回收我在SDK中提到的EfficientAdapter视图。 因此,我的ListView对象目前不超过8个项目(因为没有更多可见的)

第一次运行没问题,因为“onLastItem”是7(可见项目 - 1),但是第二次运行

    ListView.getChildCount() 

只返回6项。那么为什么我的ListView会变小?因为Visibility.GONE? 我做错了吗?

我也试过使用未注释的行。我的适配器知道列表的实际大小,我甚至可以得到视图。但是,在这些视图上设置可见性无效。

提前谢谢

2 个答案:

答案 0 :(得分:0)

  

那么为什么我的ListView会变小?   因为Visibility.GONE?

这是我的猜测,但您必须查看ListView的实施情况才能确定。

FWIW,我采用了EndlessAdapter的反向方法 - 我单独留下ListView并使用装饰适配器来处理更多数据。

答案 1 :(得分:0)

看完google IO 09 video我解决了问题。

由于Listview只包含可见视图,我只是将代码更改为:

View item = mListView.getChildAt(mListView.getChildCount()-1);

将视图保存到字段,更新数据集后,我可以切换回布局。 经过测试,效果很好。

感谢您的时间。