我正在开发一个自动增长列表视图。每次我打电话之前
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? 我做错了吗?
我也试过使用未注释的行。我的适配器知道列表的实际大小,我甚至可以得到视图。但是,在这些视图上设置可见性无效。
提前谢谢
答案 0 :(得分:0)
那么为什么我的ListView会变小? 因为Visibility.GONE?
这是我的猜测,但您必须查看ListView
的实施情况才能确定。
FWIW,我采用了EndlessAdapter
的反向方法 - 我单独留下ListView
并使用装饰适配器来处理更多数据。
答案 1 :(得分:0)
看完google IO 09 video我解决了问题。
由于Listview只包含可见视图,我只是将代码更改为:
View item = mListView.getChildAt(mListView.getChildCount()-1);
将视图保存到字段,更新数据集后,我可以切换回布局。 经过测试,效果很好。
感谢您的时间。