准备工作:
第一步:导入pullToRefresh的工程,注意需要16版本的sdk,与19版本的构建工具( 需要连网下载)
第二步:将工程作为依赖库添加到自己的工程中
使用步骤:
第一步:在布局文件中添加PullToRefreshScrollView组件
ptr:ptrDrawable="@drawable/default_ptr_flip":刷新时显示的图片
ptr:ptrAnimationStyle="flip":刷新的图片以何种方式显示出来
ptr:ptrHeaderBackground="#383838":刷新时头部的布局
ptr:ptrHeaderTextColor="#FFFFFF":刷新时头部字体的颜色
还需要添加以下的命名空间
xmlns:ptr="http://schemas.android.com/apk/res-auto"
//关闭头尾布局
plv.onRefreshComplete();
以下可加可不加:
/*这里通过getLoadingLayoutProxy 方法来指定上拉和下拉时显示的状态的区别,第一个true 代表下来状态 ,第二个true 代表上拉的状态
如果想区分上拉和下拉状态的不同,可以分别设置*/
ILoadingLayout startLabels = plv.getLoadingLayoutProxy(true, false);
startLabels.setPullLabel("下拉刷新一下");
startLabels.setRefreshingLabel("正在玩命加载...");
startLabels.setReleaseLabel("放开我就刷新");
ILoadingLayout endLabels = plv.getLoadingLayoutProxy(false, true);
endLabels.setPullLabel("上拉刷新");
endLabels.setRefreshingLabel("正在载入...");
第一步:导入pullToRefresh的工程,注意需要16版本的sdk,与19版本的构建工具( 需要连网下载)
第二步:将工程作为依赖库添加到自己的工程中
使用步骤:
第一步:在布局文件中添加PullToRefreshScrollView组件
ptr:ptrDrawable="@drawable/default_ptr_flip":刷新时显示的图片
ptr:ptrAnimationStyle="flip":刷新的图片以何种方式显示出来
ptr:ptrHeaderBackground="#383838":刷新时头部的布局
ptr:ptrHeaderTextColor="#FFFFFF":刷新时头部字体的颜色
还需要添加以下的命名空间
xmlns:ptr="http://schemas.android.com/apk/res-auto"
mainactivity
//设置模式 BOTH:支持上拉加载 下拉刷新 PULL_FROM_END:仅支持加载更多 PULL_FROM_START:下拉刷新
plv.setMode(PullToRefreshBase.Mode.BOTH);//关闭头尾布局
plv.onRefreshComplete();
以下可加可不加:
/*这里通过getLoadingLayoutProxy 方法来指定上拉和下拉时显示的状态的区别,第一个true 代表下来状态 ,第二个true 代表上拉的状态
如果想区分上拉和下拉状态的不同,可以分别设置*/
ILoadingLayout startLabels = plv.getLoadingLayoutProxy(true, false);
startLabels.setPullLabel("下拉刷新一下");
startLabels.setRefreshingLabel("正在玩命加载...");
startLabels.setReleaseLabel("放开我就刷新");
ILoadingLayout endLabels = plv.getLoadingLayoutProxy(false, true);
endLabels.setPullLabel("上拉刷新");
endLabels.setRefreshingLabel("正在载入...");
endLabels.setReleaseLabel("放开刷新...");
xml中
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent"
//注意点 xmlns:ptr="http://schemas.android.com/apk/res-auto" tools:context="com.example.a11561.pulltoshauxin.MainActivity"> <com.handmark.pulltorefresh.library.PullToRefreshListView android:id="@+id/plvs" android:layout_width="match_parent" android:layout_height="match_parent" ptr:ptrDrawable="@drawable/default_ptr_flip" ptr:ptrAnimationStyle="flip" ptr:ptrHeaderBackground="#383838" ptr:ptrHeaderTextColor="#FFFFFF" > </com.handmark.pulltorefresh.library.PullToRefreshListView> </LinearLayout>
***********************************************************************************************************************
Mainactivity
package com.example.a11561.pulltoshauxin; import android.os.AsyncTask; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.widget.ListView; import com.google.gson.Gson; import com.handmark.pulltorefresh.library.PullToRefreshBase; import com.handmark.pulltorefresh.library.PullToRefreshListView; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.client.HttpClient; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.util.EntityUtils; import java.io.IOException; import java.util.ArrayList; import java.util.List; public class MainActivity extends AppCompatActivity { private PullToRefreshListView plv; private int pathtype=1; private int types=1;//1代表刷新,2代表记载 private String path="http://365jia.cn/news/api3/365jia/news/headline?page="+pathtype; private ArrayList<ResultDatas.DataBeanX.DataBean> baseDatas; private MyAdaper adaper; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); plv=findViewById(R.id.plvs); baseDatas =new ArrayList<ResultDatas.DataBeanX.DataBean>(); initdatas(); init(); } private void init() { plv.setMode(PullToRefreshBase.Mode.BOTH); plv.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() { @Override public void onPullDownToRefresh(PullToRefreshBase<ListView> pullToRefreshBase) { types=1; pathtype=1; path="http://365jia.cn/news/api3/365jia/news/headline?page="+pathtype; initdatas(); } @Override public void onPullUpToRefresh(PullToRefreshBase<ListView> pullToRefreshBase) { types=2; pathtype++; path="http://365jia.cn/news/api3/365jia/news/headline?page="+pathtype; initdatas(); } }); } private void initdatas() { DatasTaks taks=new DatasTaks(); taks.execute(path); } class DatasTaks extends AsyncTask<String,Integer,String>{ @Override protected String doInBackground(String... strings) { HttpClient httpClient=new DefaultHttpClient(); HttpGet httpGet=new HttpGet(strings[0]); try { HttpResponse response = httpClient.execute(httpGet); if(response.getStatusLine().getStatusCode()==200){ HttpEntity entity = response.getEntity(); String s = EntityUtils.toString(entity,"utf-8"); return s; } } catch (IOException e) { e.printStackTrace(); } return null; } @Override protected void onPostExecute(String s) { super.onPostExecute(s); Gson gson=new Gson(); ResultDatas resultDatas = gson.fromJson(s, ResultDatas.class); List<ResultDatas.DataBeanX.DataBean> list = resultDatas.getData().getData(); if(types==1){ baseDatas.clear(); } baseDatas.addAll(list); setadaper(); //关闭头尾布局 plv.onRefreshComplete(); } } private void setadaper() { if(adaper==null){ adaper=new MyAdaper(MainActivity.this,baseDatas); plv.setAdapter(adaper); }else{ adaper.notifyDataSetChanged(); } } }