欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

android 在自定义的listview(有刷新加载项)列表中,数据过少时不能铺满整个屏幕时,header和footer同时显示问题...

发布时间:2024/4/17 59 豆豆
生活随笔 收集整理的这篇文章主要介绍了 android 在自定义的listview(有刷新加载项)列表中,数据过少时不能铺满整个屏幕时,header和footer同时显示问题... 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

android  在自定义的listview(有刷新加载项)列表中,数据过少时,当刷新时,加载项也会显示,这是很头疼的一个问题,查阅了一些资料,总结了一个比较不错的方法:

 原来代码:

1 @Override 2 public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { 3 this.firstVisibleItem = firstVisibleItem; 4 this.lastVisibleItem = firstVisibleItem + visibleItemCount; 5 this.totalItemCount = totalItemCount; 6 } 7 8 @Override 9 public void onScrollStateChanged(AbsListView view, int scrollState) { 10 this.scrollState = scrollState; 11 12 if (totalItemCount == lastVisibleItem&& scrollState == SCROLL_STATE_IDLE) { 13 if (!isLoading) { 14 isLoading = true; 15 footer.findViewById(R.id.load_layout).setVisibility(View.VISIBLE); 16 // 加载更多 17 iLoadListener.onLoad(); 18 } 19 } 20 21 }

通常大家通过这种方法来判断是否应该显示加载并访问网络数据等,但是当数据不足以布满全部时,下拉刷新后,(因满足条件)会同时触发加载事件,想要不触发加载事件,只有改变触发条件,一种思想是判断数据是否过少不能布满屏幕,但是这种思想太难用代码实现(小生刚刚学习android,经验不足),另一种思想是因为在刷新时不能显示加载布局,我们可以判断当前是否处于刷新状态来判断因不应该显示加载布局,而判断是否处于刷新状态我们可以利用header.getPaddingTop() == -headerHeight(headerHeight是hreader的高度)判断

请看代码

1 @Override 2 public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { 3 this.firstVisibleItem = firstVisibleItem; 4 this.lastVisibleItem = firstVisibleItem + visibleItemCount; 5 this.totalItemCount = totalItemCount; 6 } 7 8 @Override 9 public void onScrollStateChanged(AbsListView view, int scrollState) { 10 this.scrollState = scrollState; 11 if (header.getPaddingTop() == -headerHeight) { 12 flag = true; 13 } else { 14 flag = false; 15 } 16 if (totalItemCount == lastVisibleItem && flag && scrollState == SCROLL_STATE_IDLE) { 17 if (!isLoading) { 18 isLoading = true; 19 footer.findViewById(R.id.load_layout).setVisibility(View.VISIBLE); 20 // 加载更多 21 iLoadListener.onLoad(); 22 } 23 } 24 25 }

定义一个私有布尔变量flag,当header.getPaddingTop() == -headerHeight时,当前不在刷新状态,flag=true,满足显示加载布局的一个条件。

当处于刷新状态时,flag=false,不满足加载条件,所以解决了同时出现两个布局的问题。

 

  当然,大神们会有更好的办法。。本菜鸟只能想到这么多了,谢谢。。。。。。

 

转载于:https://www.cnblogs.com/xiaotaoqi/p/5462267.html

总结

以上是生活随笔为你收集整理的android 在自定义的listview(有刷新加载项)列表中,数据过少时不能铺满整个屏幕时,header和footer同时显示问题...的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。