添加依赖
compile ‘com.github.userswlwork:pull-to-refresh:1.0.0’
布局文件
<com.handmark.pulltorefresh.library.PullToRefreshListView
android:id="@+id/mprl"
android:layout_width="match_parent"
android:layout_height="match_parent">
</com.handmark.pulltorefresh.library.PullToRefreshListView>
package com.exam.pulltrandsql;
import android.content.ContentValues;
import android.database.Cursor;
import android.os.AsyncTask;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
import com.exam.pulltrandsql.bean.Data;
import com.exam.pulltrandsql.bean.JsonData;
import com.exam.pulltrandsql.util.Dao;
import com.exam.pulltrandsql.util.NetStateUtils;
import com.exam.pulltrandsql.util.NetWordUtils;
import com.google.gson.Gson;
import com.handmark.pulltorefresh.library.PullToRefreshBase;
import com.handmark.pulltorefresh.library.PullToRefreshListView;
import com.nostra13.universalimageloader.core.ImageLoader;
import java.util.ArrayList;
public class MainActivity extends AppCompatActivity {
private MyAdpter myAdpter;
private PullToRefreshListView prl;
private int page = 0;
String baseUrl = "http://api.expoon.com/AppNews/getNewsList/type/1/p/";
ArrayList<Data> list = new ArrayList<>();
private ImageLoader instance;
private String murl = "";
private String json;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
prl = findViewById(R.id.mprl);
prl.setMode(PullToRefreshListView.Mode.BOTH);
instance = ImageLoader.getInstance();
initdata(page);
// plv.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() {
prl.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() {
@Override
public void onPullDownToRefresh(PullToRefreshBase<ListView> pullToRefreshBase) {
list.clear();
initdata(page);
}
@Override
public void onPullUpToRefresh(PullToRefreshBase<ListView> pullToRefreshBase) {
page++;
initdata(page);
}
});
}
private void initdata(int page) {
//网络判断
boolean iscoon = NetStateUtils.iscoon(MainActivity.this);
if(iscoon){
murl = baseUrl+page;
new MyAsyncTask().execute(murl);
}else{
Toast.makeText(MainActivity.this,"无网络"+iscoon,Toast.LENGTH_SHORT).show();
Dao dao = new Dao(MainActivity.this);
Cursor cursor = dao.select("jsontable", null, null, null, null, null, null);
if(cursor.moveToFirst()){
json = cursor.getString(cursor.getColumnIndex("json"));
}
Toast.makeText(MainActivity.this,"无网络"+json,Toast.LENGTH_SHORT).show();
Gson gson = new Gson();
JsonData jsonData = gson.fromJson(json, JsonData.class);
ArrayList<Data> data = jsonData.getData();
list.addAll(data);
MyAdpter myAdpter2 = new MyAdpter();
prl.setAdapter(myAdpter2);
myAdpter2.notifyDataSetChanged();
prl.onRefreshComplete();
}
}
class MyAsyncTask extends AsyncTask<String,Void,String>{
@Override
protected String doInBackground(String... strings) {
String netjson = NetWordUtils.getNetjson(strings[0]);
Dao dao = new Dao(MainActivity.this);
dao.delete("jsontable","url=?",new String[]{murl});
ContentValues values = new ContentValues();
values.put("json",netjson);
values.put("url",murl);
dao.intert("jsontable",null,values);
return netjson;
}
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
Gson gson = new Gson();
JsonData jsonData = gson.fromJson(s, JsonData.class);
ArrayList<Data> data = jsonData.getData();
list.addAll(data);
myAdpter = new MyAdpter();
prl.setAdapter(myAdpter);
myAdpter.notifyDataSetChanged();
prl.onRefreshComplete();
}
}
class MyAdpter extends BaseAdapter{
@Override
public int getCount() {
return list.size();
}
@Override
public Object getItem(int position) {
return list.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
Holder holder = null;
if(convertView==null){
convertView = View.inflate(MainActivity.this,R.layout.item00,null);
holder = new Holder();
holder.textView= convertView.findViewById(R.id.item00_text);
holder.imageView = convertView.findViewById(R.id.item00_iamge);
convertView.setTag(holder);
}else {
holder = (Holder) convertView.getTag();
}
holder.textView.setText(list.get(position).getNews_title());
instance.displayImage(list.get(position).getPic_url(),holder.imageView);
return convertView;
}
class Holder{
ImageView imageView;
TextView textView;
}
}
}