Android ListView实现上拉加载的示例代码

  

本文介绍了Android ListView实现上拉加载的示例代码,分享给大家,具体如下:

  

 Android ListView实现上拉加载的示例代码

  

我们先分析一下如何实现列表视图上拉加载。

  
      <李>当我们上拉的时候,会出现一个提示界面,即ListView的页脚布局。   <李> ListView要实现滚动,所以要监听ListView滚动事件,即alt=" Android ListView实现上拉加载的示例代码">

      

    , <强>页脚加载时状态变化

      

    定义一个如上图所示的页脚的XML文件footer_layout.xml

            & lt; & # 63; xml version=" 1.0 " encoding=" utf - 8 " & # 63;比;   & lt; RelativeLayout xmlns: android=" http://schemas.android.com/apk/res/android "   xmlns:工具=" http://schemas.android.com/tools "   android: layout_width=" match_parent "   android: layout_height=" wrap_content "   android: paddingBottom=" 10 dp”   android: paddingTop=" 10 dp”比;      LinearLayout & lt;   android: id=癅 + id/布局”   android: layout_width=" wrap_content "   android: layout_height=" wrap_content "   android: layout_centerHorizontal=" true "   android: layout_marginTop=" 10 dp”   android:重力="中心"   面向android:=按怪薄北?      & lt; TextView   android: id=癅 + id/tv_tip”   android: layout_width=" wrap_content "   android: layout_height=" wrap_content "   android:文本="下拉可以刷新”   android: textSize=" 12 sp "/比;   & lt;/LinearLayout>      & lt; ImageView   android: id=癅 + id/img_arrow”   android: layout_width=" wrap_content "   android: layout_height=" wrap_content "   android: layout_marginRight=" 10 dp”   android: layout_toLeftOf=癅 + id/布局”   android: src=" https://www.yisu.com/zixun/@drawable pull_to_refresh_arrow "/比;      & lt; ProgressBar   android: id=癅 + id/进展”      android: layout_width=" wrap_content "   android: layout_height=" wrap_content "   android: layout_centerVertical=" true "   android: layout_marginRight=" 10 dp”   android: layout_toLeftOf=癅 + id/img_arrow”   android:可见性="了"   工具:可见性=翱杉?祝辞   & lt;/RelativeLayout>      

    <强> 2,初始化布局

      

    定义一个RefreshListView类继承ListView,重写构造函数,并将页脚添加到列表视图中。

            公开课RefreshListView延伸ListView {   私人视图标题;   私人int headerHeight;//顶部布局高度   私人int firstVisibleItem;//当前第一个项目可见位置   私人浮动startY;//按下时开始的Y值   私人int scrollState;//当前滚动状态      私人视图页脚;   私人int footerHeight;//底部布局高度   私人lastY浮动;   私人布尔canLoadMoreEnabled;//是否允许加载更多      公共RefreshListView(上下文语境){   超级(上下文);   initView(上下文);   }      公共RefreshListView(上下文语境,AttributeSet attrs) {   超级(上下文,attrs);   initView(上下文);   }      公共RefreshListView(上下文语境、AttributeSet attrs int defStyleAttr) {   超级(上下文、attrs defStyleAttr);   initView(上下文);   }         私人空间initView(上下文语境){   头=LayoutInflater.from(上下文).inflate (R.layout.header_layout, null);   页脚=LayoutInflater.from(上下文).inflate (R.layout.footer_layout, null);   measureView(头);   measureView(页脚);//这里获取高度的时候需要先通知父布局头占用的空间   headerHeight=header.getMeasuredHeight ();   footerHeight=footer.getMeasuredHeight ();   topPadding (-headerHeight);   bottomPadding (-footerHeight);//用于隐藏页脚   this.addHeaderView(头);   this.addFooterView(页脚);   this.setOnScrollListener(这个);   }/* *   *设置页脚布局的下边距   *以隐藏页脚   * @param topPadding   */私人空间bottomPadding (int bottomPadding) {   footer.getPaddingTop footer.setPadding (footer.getPaddingLeft () (),   footer.getPaddingRight (),   bottomPadding);   footer.invalidate ();   }   }      

    <强> 3,实现上拉加载

      

    给ListView设置监听

            公共类RefreshListView扩展视图实现AbsListView。OnScrollListener {   私人int firstVisibleItem;//当前第一个项目可见位置   私人int scrollState;//当前滚动状态      私人空间initView(上下文语境){   头=LayoutInflater.from(上下文).inflate (R.layout.header_layout, null);   页脚=LayoutInflater.from(上下文).inflate (R.layout.footer_layout, null);   measureView(头);   measureView(页脚);//这里获取高度的时候需要先通知父布局头占用的空间   headerHeight=header.getMeasuredHeight ();   footerHeight=footer.getMeasuredHeight ();   topPadding (-headerHeight);   bottomPadding (-footerHeight);   this.addHeaderView(头);   this.addFooterView(页脚);   this.setOnScrollListener(这个);   }      @Override   公共空间>   私人lastY浮动;      私有静态int状态;//当前状态   私人最终静态int没有=0;//正常状态   私人最终静态int拉=1;//下拉状态   私人最终静态int释放=2;//释放状态   私人最终静态int刷新=3;//正在刷新状态

    Android ListView实现上拉加载的示例代码