android最基本的lsitvew实现下拉刷新,上拉加载更多的demo

接着上次来讲,这次来动手写一下listview的下拉刷新功能和上拉加载更多功能。

当然google在android4.0以上的API里面的提供了一个可以下拉加载更多的控件,这个小圆圈加载控件在豆瓣,知乎日报里面都有运用到,而我在下一篇博客也会提到。

先来了解一下最基本的listview的的加载功能吧。

首先是下拉刷新功能,我先说一下基本的思路。listveiw的面提供了一个addheader()方法,,我们可以重写listview,然后用addheader方法加载我们自定义的加载布局。然后就是隐藏这个header,然后复写监听方法OnScrollListener()和OnTouch()方法,最后再提供一个接口方法来让用户实现加载数据。具体的我在代码里面都注释好了。

再来说一下上拉加载,这个相比于下拉加载就简单多了,我们可以addfooter()方法添加布局,然后监听OnScrollListener就可以了,当最后一个可见的item等于总数量的item时,就可以加载数据了。具体在代码里面斗注释好了。

效果图:

先发布局文件:

<RelativeLayout xmlns:android=""xmlns:tools=""android:layout_width="match_parent"android:layout_height="match_parent"tools:context="com.example.listview_pulltorefresh.MainActivity" ><com.example.listview_pulltorefresh.RefreshListviewandroid:id="@+id/listview"android:layout_width="match_parent"android:layout_height="match_parent"></com.example.listview_pulltorefresh.RefreshListview></RelativeLayout>header.xml

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android=""android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical" ><RelativeLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:paddingBottom="10dp"android:paddingTop="10dp" ><LinearLayoutandroid:id="@+id/layout"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_centerInParent="true"android:gravity="center"android:orientation="vertical" ><TextViewandroid:id="@+id/tip"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="下拉刷新" /><TextViewandroid:id="@+id/lastrefresh_time"android:layout_width="wrap_content"android:layout_height="wrap_content" /></LinearLayout><ImageViewandroid:id="@+id/arrow"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginLeft="20dp"android:layout_toLeftOf="@id/layout"android:src="@drawable/pull_to_refresh_arrow" /><!– android:indeterminateDrawable="@drawable/loading_anim" –><ProgressBarandroid:id="@+id/progress"style="?android:attr/progressBarStyleSmall"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginLeft="20dp"android:layout_toLeftOf="@id/layout"android:visibility="gone" /></RelativeLayout></LinearLayout>

footer.xml<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android=""android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical" ><LinearLayoutandroid:id="@+id/load_footer"android:layout_width="match_parent"android:layout_height="wrap_content"android:gravity="center"android:orientation="horizontal"android:paddingBottom="10dp"android:paddingTop="10dp" ><ProgressBarstyle="?android:attr/progressBarStyleSmall"android:layout_width="wrap_content"android:layout_height="wrap_content" /><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="正在加载"/></LinearLayout></LinearLayout>

listitem.xml

<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android=""android:layout_width="match_parent"android:layout_height="50dp"><ImageViewandroid:id="@+id/image"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginLeft="10dp"android:src="@drawable/ic_launcher"/><TextViewandroid:id="@+id/textView1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_centerVertical="true"android:layout_marginLeft="91dp"android:layout_toRightOf="@+id/image"android:text="数据列" /></RelativeLayout>自定义的listview方法:

在时间里面我们什么也不能留下,包括痛苦,快乐和生命。

android最基本的lsitvew实现下拉刷新,上拉加载更多的demo

相关文章:

你感兴趣的文章:

标签云: