加依赖 compile 'com.github.userswlwork:pull-to-refresh:1.0.0'
版本最低15
minSdkVersion 15
package com.pdj.bw.pulltorefreshscorview; import android.os.AsyncTask; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.support.v4.view.ViewPager; import android.support.v7.app.AppCompatActivity; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.ListView; import android.widget.ScrollView; import com.google.gson.Gson; import com.handmark.pulltorefresh.library.ILoadingLayout; import com.handmark.pulltorefresh.library.PullToRefreshBase; import com.handmark.pulltorefresh.library.PullToRefreshScrollView; import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; import java.util.ArrayList; import java.util.List; public class MainActivity extends AppCompatActivity { private int pageIndex=1; private int operType=1; private String myurl="http://365jia.cn/news/api3/365jia/news/headline?page="+pageIndex; private ListView lv; private PullToRefreshScrollView plv; private List<String> urlpics = new ArrayList<>(); private List<JsonData.DataBeanX.DataBean> datas=new ArrayList<>(); private MyAdapter adapter; private ViewPager vp; private List<ImageView> lists; private LinearLayout po; private Handler mhandler = new Handler(){ @Override public void handleMessage(Message msg) { super.handleMessage(msg); int i = vp.getCurrentItem(); i++; vp.setCurrentItem(i); setSelectedPoint(i%lists.size()); sendEmptyMessageDelayed(1,1000); } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); vp = findViewById(R.id.vp); lv = findViewById(R.id.lv); plv = findViewById(R.id.plv); po = findViewById(R.id.point); initPlv(); requestData(); } private void requestData() { new MyAsynckTask().execute(myurl); } class MyAsynckTask extends AsyncTask<String,Void,String>{ @Override protected String doInBackground(String... strings) { try { URL url = new URL(strings[0]); HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection(); urlConnection.setRequestMethod("GET"); int i = urlConnection.getResponseCode(); if(i==200){ InputStream inputStream = urlConnection.getInputStream();//得到服务器返回的数据流; BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream)); StringBuilder stringBuilder = new StringBuilder();//可拼接字符串; String temp = ""; while ((temp = bufferedReader.readLine()) != null) { stringBuilder.append(temp); } String result = stringBuilder.toString(); return result; } } catch (Exception e) { e.printStackTrace(); } return null; } @Override protected void onPostExecute(String s) { super.onPostExecute(s); Gson gson = new Gson(); JsonData data = gson.fromJson(s, JsonData.class); List<JsonData.DataBeanX.DataBean> beans = data.getData().getData(); showPics(beans); if(operType==1){ datas.clear(); } datas.addAll(beans); setadapter(); //关闭头尾布局 plv.onRefreshComplete(); } } private void showPics( List<JsonData.DataBeanX.DataBean> beans){ urlpics.clear(); urlpics.add("http://365jia.cn/uploads/"+beans.get(0).getPics().get(0)); urlpics.add("http://365jia.cn/uploads/"+beans.get(1).getPics().get(0)); urlpics.add("http://365jia.cn/uploads/"+beans.get(2).getPics().get(0)); PgAdapter adapter = new PgAdapter(urlpics, MainActivity.this); vp.setAdapter(adapter); initPoint(); mhandler.sendEmptyMessageDelayed(1,1000); } //设置选中的小圆点 private void setSelectedPoint(int pageIndex){ for (int i = 0; i <lists.size() ; i++) { if(i==pageIndex){ lists.get(i).setImageResource(R.mipmap.point_selected); }else { lists.get(i).setImageResource(R.mipmap.point_mormal); } } } private void initPoint() { lists=new ArrayList<>(); //清空LinearLayout po.removeAllViews(); for (int i = 0; i <urlpics.size() ; i++) { ImageView imageView=new ImageView(this); //设置它的布局参数 LinearLayout.LayoutParams params=new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,LinearLayout.LayoutParams.WRAP_CONTENT); params.setMargins(0,0,10,0);//设置右边的间隔 if(i==0){ imageView.setImageResource(R.mipmap.point_selected);//选中的小圆点 }else{ imageView.setImageResource(R.mipmap.point_mormal); } po.addView(imageView,params); lists.add(imageView); } } private void setadapter() { if(adapter==null){ adapter = new MyAdapter(datas,MainActivity.this); lv.setAdapter(adapter); }else { adapter.notifyDataSetChanged(); } } private void initPlv() { plv.setMode(PullToRefreshBase.Mode.BOTH); plv.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ScrollView>() { @Override public void onPullDownToRefresh(PullToRefreshBase<ScrollView> pullToRefreshBase) { int pageIndex=1; int operType=1; String myurl="http://365jia.cn/news/api3/365jia/news/headline?page="+pageIndex; //清空handler mhandler.removeCallbacksAndMessages(null); requestData(); } @Override public void onPullUpToRefresh(PullToRefreshBase<ScrollView> pullToRefreshBase) { pageIndex++; operType=2; myurl="http://365jia.cn/news/api3/365jia/news/headline?page="+pageIndex; //清空handler mhandler.removeCallbacksAndMessages(null); requestData(); } }); ILoadingLayout startLabels = plv.getLoadingLayoutProxy(true, false); startLabels.setPullLabel("下拉刷新一下"); startLabels.setRefreshingLabel("正在玩命加载..."); startLabels.setReleaseLabel("放开我就刷新"); ILoadingLayout endLabels = plv.getLoadingLayoutProxy(false, true); endLabels.setPullLabel("上拉刷新"); endLabels.setRefreshingLabel("正在载入..."); endLabels.setReleaseLabel("放开刷新..."); } }