国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統(tǒng) > Android > 正文

Android中判斷l(xiāng)istview是否滑動(dòng)到頂部和底部的實(shí)現(xiàn)方法

2019-10-22 18:22:29
字體:
供稿:網(wǎng)友

今天實(shí)現(xiàn)listview的下拉刷新和上拉加載的時(shí)候,遇到了一個(gè)問題,*就是說需要根據(jù)listview中滑動(dòng)的位置來進(jìn)行下拉刷新和上拉加載。*

具體點(diǎn),只有當(dāng)我的listview滑動(dòng)到最頂部的時(shí)候,這時(shí)候下拉才執(zhí)行刷新操作;只有當(dāng)我的listview滑動(dòng)到最底部的時(shí)候,這時(shí)候上拉才執(zhí)行加載操作。

那么怎么判斷l(xiāng)istview的滑動(dòng)位置呢?其實(shí)還是比較好解決的,說一下我的想法:

頂部的判斷,根據(jù)listview中的第一個(gè)item距離listview頂部的距離是否為0。

底部的判斷,根據(jù)listview中的最后一個(gè)item的底部與第一個(gè)item的頂部的距離是否為整個(gè)listview的高度。

上面的兩個(gè)想法代碼實(shí)現(xiàn)如下:

private void setLiseners() {    // listview設(shè)置滑動(dòng)監(jiān)聽    lsv_new_house.setOnScrollListener(new AbsListView.OnScrollListener() {      @Override      public void onScrollStateChanged(AbsListView absListView, int i) {      }      @Override      public void onScroll(AbsListView absListView, int firstVisibleItem, int visibleItemCount, int totalItemCount) {        if(firstVisibleItem == 0){          View first_view = lsv_new_house.getChildAt(0);          if(first_view != null && first_view.getTop() == 0){//            LogUtils.e("已經(jīng)滾動(dòng)到頂部了");            bl_down = true;// 可以下拉刷新了          }else {//            LogUtils.e("還沒到頂部");            bl_down = false;// 未滑動(dòng)到頂部不讓下拉刷新          }        }        if(firstVisibleItem + visibleItemCount == totalItemCount){          View last_view = lsv_new_house.getChildAt(lsv_new_house.getChildCount() - 1);//          LogUtils.e("height = " + lsv_new_house.getBottom());// 最后一個(gè)item的底部與listview第一個(gè)item頂部之間的距離//          int h = lsv_new_house.getHeight();//          LogUtils.e("h = " + h);          if(last_view != null && last_view.getBottom() == lsv_new_house.getHeight()){//            LogUtils.e("已經(jīng)滾動(dòng)到最底部了");            bl_up = true;// 可以上拉加載了          }else {//            LogUtils.e("還沒到底部");            bl_up = false;// 未滑動(dòng)到底部不讓上拉加載          }        }      }    });  }

代碼都是很簡(jiǎn)單的,簡(jiǎn)單說一下。獲取第一個(gè)item的view和最后一個(gè)item的view,并進(jìn)行相應(yīng)的判斷即可。

而且這樣判斷會(huì)更加的精確,因?yàn)橹灰狶istView中第一個(gè)item出現(xiàn)在屏幕上端,即使只出現(xiàn)一部分,firstVisibleItem 的值也依然為0, onScroll()回調(diào)就會(huì)發(fā)生; 同樣ListView 的最后一個(gè) item 即使只顯示一部分,((firstVisibleItem + visibleItemCount) == totalItemCount) 的值也是等于totalItemCount。

但是加了距頂部的距離和整個(gè)listview的高度判斷后,就可以做到精確的判斷了。

以上這篇Android中判斷l(xiāng)istview是否滑動(dòng)到頂部和底部的實(shí)現(xiàn)方法就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持VEVB武林網(wǎng)。


注:相關(guān)教程知識(shí)閱讀請(qǐng)移步到Android開發(fā)頻道。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 灵石县| 肃宁县| 宜兰市| 启东市| 五莲县| 英吉沙县| 阳西县| 雷波县| 新巴尔虎右旗| 贡觉县| 吴江市| 屏山县| 大荔县| 图木舒克市| 广汉市| 武义县| 沭阳县| 湖北省| 南乐县| 建宁县| 连州市| 香港 | 池州市| 晋州市| 东台市| 柏乡县| 大悟县| 镇平县| 迁西县| 仁布县| 镇宁| 株洲县| 加查县| 望奎县| 宜都市| 定襄县| 通化市| 堆龙德庆县| 额尔古纳市| 谷城县| 黄冈市|