2

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

    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?我做错了吗?

我也尝试使用未注释的行。我的适配器知道列表的实际大小,我什至可以得到视图。但是设置这些视图的可见性没有效果。

提前谢谢

4

2 回答 2

0

那么为什么我的 ListView 越来越小了?因为 Visibility.GONE?

那是我的猜测,但您必须查看实现ListView才能确定。

FWIW,我采取了相反的方法EndlessAdapter——我不理会它ListView,并使用一个装饰适配器来处理获取更多数据。

于 2010-03-19T20:39:29.003 回答
0

在观看了google IO 09 视频后,我解决了这个问题。

由于 Listview 仅包含可见视图,因此我将代码更改为:

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

将视图保存到字段并在更新数据集后我可以切换回布局。测试它并且工作完美。

感谢您的时间。

于 2010-03-19T21:00:09.250 回答