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同时显示问题...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linq 读取Xml 数据
- 下一篇: 今天学到的东西