PullToRefresh 上拉刷新,下拉加载数据 框架的简单使用
2017-10-18 13:59
489 查看
//导入依赖包
package com.example.pulltorefresh; import android.os.Bundle; import android.os.Handler; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.ListView; import android.widget.TextView; import com.handmark.pulltorefresh.library.ILoadingLayout; import com.handmark.pulltorefresh.library.PullToRefreshBase; import com.handmark.pulltorefresh.library.PullToRefreshListView; import java.util.ArrayList; import java.util.List; public class MainActivity extends AppCompatActivity { private PullToRefreshListView pull_lv; private List<String> list = new ArrayList<>(); private MyAdapter adapter; private Handler handler = new Handler(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); pull_lv = (PullToRefreshListView) findViewById(R.id.pull_lv); //设置pulltorefresh的监听 initLv(); //初始化数据 initData(); //设置适配器 setAdapter(); } private void setAdapter() { if (adapter==null){ adapter = new MyAdapter(); pull_lv.setAdapter(adapter); }else { adapter.notifyDataSetChanged(); } } private void initData() { for (int i=0;i<20;i++){ list.add("这是第"+i+"条数据"); } } private void initLv() { //设置刷新模式 ,both代表支持上拉和下拉,pull_from_end代表上拉,pull_from_start代表下拉 pull_lv.setMode(PullToRefreshBase.Mode.BOTH); /*这里通过getLoadingLayoutProxy 方法来指定上拉和下拉时显示的状态的区别,第一个true 代表下来状态 ,第二个true 代表上拉的状态 如果想区分上拉和下拉状态的不同,可以分别设置*/ ILoadingLayout startLabels = pull_lv.getLoadingLayoutProxy(true, false); startLabels.setPullLabel("下拉刷新"); startLabels.setRefreshingLabel("正在拉"); startLabels.setReleaseLabel("放开刷新"); ILoadingLayout endLabels = pull_lv.getLoadingLayoutProxy(false, true); endLabels.setPullLabel("上拉刷新"); endLabels.setRefreshingLabel("正在载入..."); endLabels.setReleaseLabel("放开刷新..."); /*如果Mode设置成Mode.BOTH,需要设置刷新Listener为OnRefreshListener2,并实现onPullDownToRefresh()、onPullUpToRefresh()两个方法。 如果Mode设置成Mode.PULL_FROM_START或Mode.PULL_FROM_END,需要设置刷新Listener为OnRefreshListener,同时实现onRefresh()方法。 当然也可以设置为OnRefreshListener2,但是Mode.PULL_FROM_START的时候只调用onPullDownToRefresh()方法,Mode.PULL_FROM_END的时候只调用onPullUpToRefresh()方法. 加载数据完成后 必须 调用下 onRefreshComplete() 完成关闭 header,footer视图 */ pull_lv.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() { @Override public void onPullDownToRefresh(PullToRefreshBase<ListView> refreshView) {//下拉刷新的回调 //下拉刷新的数据,显示在listview列表的最上面 addtoTop(); handler.postDelayed(new Runnable() { @Override public void run() { //刷新完成,必须在异步下完成 pull_lv.onRefreshComplete(); //刷新适配器 setAdapter(); } },1000); } private void addtoTop() { List<String> lists=new ArrayList<String>(); for(int i=0;i<20;i++){ lists.add("up up up"); } list.addAll(0,lists); } private void addtoBottom() { List<String> listss=new ArrayList<String>(); for(int i=0;i<20;i++){ listss.add("bottom bottom bottom"); } list.addAll(listss); } @Override public void onPullUpToRefresh(PullToRefreshBase<ListView> refreshView) {//上拉加载的回调 //加载更多的数据,添加到集合列表的最后面 addtoBottom(); handler.postDelayed(new Runnable() { @Override public void run() { //刷新完成,必须在异步下完成 pull_lv.onRefreshComplete(); //刷新适配器 setAdapter(); } },1000); } }); } class MyAdapter extends BaseAdapter{ @Override public int getCount() { return list.size(); } @Override public Object getItem(int i) { return null; } @Override public long getItemId(int i) { return 0; } @Override public View getView(int i, View view, ViewGroup viewGroup) { TextView textView=new TextView(MainActivity.this); textView.setText(list.get(i)); return textView; } } }
//布局
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"xmlns:app="http://schemas.android.com/apk/res-auto"android:layout_width="match_parent"android:layout_height="match_parent"xmlns:ptr="http://schemas.android.com/apk/res-auto"tools:context="com.example.pulltorefresh.MainActivity"><!--ptr:ptrDrawable="@drawable/default_ptr_flip":刷新时显示的图片ptr:ptrAnimationStyle="flip":刷新的图片以何种方式显示出来ptr:ptrHeaderBackground="#383838":刷新时头部的布局ptr:ptrHeaderTextColor="#FFFFFF":刷新时头部字体的颜色--><com.handmark.pulltorefresh.library.PullToRefreshListViewandroid:layout_width="match_parent"android:layout_height="match_parent"android:id="@+id/pull_lv"ptr:ptrDrawable="@drawable/default_ptr_flip"ptr:ptrAnimationStyle="flip"ptr:ptrHeaderBackground="#383838"ptr:ptrHeaderTextColor="#FFFFFF"></com.handmark.pulltorefresh.library.PullToRefreshListView></RelativeLayout>
相关文章推荐
- Android - 框架】之刷新加载框架Ultra-Pull-To-Refresh的使用,及其自定义头部刷新和底部加载更多
- 使用pullToRefresh进行下拉刷新和上拉加载
- 【Android - 框架】之刷新加载框架Ultra-Pull-To-Refresh的使用
- android使用PullToRefresh实现上拉加载和下拉刷新效果
- 超简单的 listview的第三方控件PullToRefreshListView 上拉刷新,下拉加载更多,分页加载
- android使用PullToRefresh实现上拉加载和下拉刷新效果
- 【Android - 框架】之刷新加载框架Ultra-Pull-To-Refresh的使用
- 使用自定义的item、Adapter和AsyncTask、第三方开源框架PullToRefresh联合使用实现自定义的下拉列表(从网络加载图片显示在item中的ImageView)
- 关于PullToRefresh对于数据的解析和上拉刷新下拉加载
- PullToRefreshGridView实现上拉加载和下拉刷新,使用Volley框架解析数据
- (转)【Android - 框架】之刷新加载框架Ultra-Pull-To-Refresh的使用
- pulltorefreshscrollview的简单实现(上拉刷新,下拉加载)
- PullToRefreshListView上拉加载,下拉刷新 刷新网络数据 简单实现ListView显示网络数据
- PullToRefresh上拉刷新下拉加载更多的使用
- android使用PullToRefresh实现上拉加载和下拉刷新效果
- PullToRefreshListView刷新下拉加载最简单用法
- Android使用PullToRefresh实现上拉加载和下拉刷新效果的代码
- 使用pullToRefresh进行下拉刷新和上拉加载
- 使用自定义的item、Adapter和AsyncTask、第三方开源框架PullToRefresh联合使用实现自定义的下拉列表(从网络加载图片显示在item中的ImageView)
- 使用pullToRefresh进行下拉刷新和上拉加载