如何让listview或者gridview设置到底刷新新数据
昨天簡單的看了一下ScrollView的例子,雖然可以實(shí)現(xiàn)拉到底觸發(fā)監(jiān)聽,但是Listview和gridview本身就自帶了下拉屬性,所以不需要ScrollView來實(shí)現(xiàn)。
那么在Listview和gridview中怎么把到底自動刷新數(shù)據(jù)實(shí)現(xiàn)呢?
在這兩個組件中,其實(shí)可以設(shè)置OnScrollListener來監(jiān)聽滑動狀態(tài)。
當(dāng)你實(shí)現(xiàn)了這個接口,那么就需要實(shí)現(xiàn)兩個抽象方法onScrollStateChanged和onScroll;
onScroll如下:
1 @Override 2 public void onScroll(AbsListView view, int firstVisibleItem, 3 int visibleItemCount, int totalItemCount) { 4 /** 5 * firstVisibleItem 表示在當(dāng)前屏幕顯示的第一個listItem在整個listView里面的位置(下標(biāo)從0開始) 6 * visibleItemCount表示在現(xiàn)時屏幕可以見到的ListItem(部分顯示的ListItem也算)總數(shù) 7 * totalItemCount表示ListView的ListItem總數(shù) 8 * listView.getLastVisiblePosition()表示在現(xiàn)時屏幕最后一個ListItem 9 * (最后ListItem要完全顯示出來才算)在整個ListView的位置(下標(biāo)從0開始) 10 */ 11 }onScrollStateChanged如下:
1 @Override 2 public void onScrollStateChanged(AbsListView view, int scrollState) { 3 /** 4 *scrollState有三種狀態(tài),分別是SCROLL_STATE_IDLE、SCROLL_STATE_TOUCH_SCROLL、SCROLL_STATE_FLING 5 *SCROLL_STATE_IDLE是當(dāng)屏幕停止?jié)L動時 6 *SCROLL_STATE_TOUCH_SCROLL是當(dāng)用戶在以觸屏方式滾動屏幕并且手指仍然還在屏幕上時(The user is scrolling using touch, and their finger is still on the screen) 7 *SCROLL_STATE_FLING是當(dāng)用戶由于之前劃動屏幕并抬起手指,屏幕產(chǎn)生慣性滑動時(The user had previously been scrolling using touch and had performed a fling) 8 */ 9 } 10 }那么我們其實(shí)使用onScrollStateChanged就可以觸發(fā)了:
//*******這段代碼是我自己的數(shù)據(jù)進(jìn)行添加****************Map<String,Object> map1 = new HashMap<String,Object>();map1.put("title", "abc");map1.put("img", R.drawable.ic_launcher);list.add(map1);//**************************BaseAdapter ba = (BaseAdapter)gridview.getAdapter();ba.notifyDataSetChanged();}}}
上面的代碼解釋一下:
1、scrollState 是滑動的狀態(tài),SCROLL_STATE_IDLE表示屏幕停止滑動的那一刻;
2、view.getLastVisiblePosition()獲取的是當(dāng)前整個列表(無論你是listview還是gridview)所有item子控件的最后一個組件,并且是從0開始索引;
3、view.getCount()表示的是當(dāng)前的組件的數(shù)量,是從1開始查的(只要你會查數(shù)就行),所以判斷的時候要-1;
4、最后還是要獲取的列表對應(yīng)的適配器(Adapter),然后notifyDataSetChanged刷新列表數(shù)據(jù)(好處是不需要刷新整個Activity)。
那么這樣就可以實(shí)現(xiàn)到底自動刷新效果了。(四海小森純手打^_^)
轉(zhuǎn)載于:https://www.cnblogs.com/ccshxt/p/5231624.html
與50位技術(shù)專家面對面20年技術(shù)見證,附贈技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的如何让listview或者gridview设置到底刷新新数据的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CocoaPods的使用
- 下一篇: ningbooj--1655--木块拼接