//MyHelper public class MyHelper extends SQLiteOpenHelper { public MyHelper(Context context) { super(context, "mydb", null, 1); } @Override public void onCreate(SQLiteDatabase sqLiteDatabase) { sqLiteDatabase.execSQL("create table jsoncache(id integer primary key autoincrement,urlpath text,jsondata text)"); } @Override public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) { } }
//dao public class Dao { private MyHelper myHelper; public Dao(Context context){ myHelper=new MyHelper(context); } public void insertData(String path,String json){ SQLiteDatabase database=myHelper.getWritableDatabase(); database.delete("jsoncache","urlpath=?",new String[]{path}); ContentValues contentValues=new ContentValues(); contentValues.put("urlpath",path); contentValues.put("jsondata",json); long rowid=database.insert("jsoncache",null,contentValues); } public String queryData(String string){ String data=""; SQLiteDatabase db=myHelper.getWritableDatabase(); Cursor cursor=db.query("jsoncache",null,"urlpath=?",new String[]{string},null,null,null); while (cursor.moveToNext()){ data=cursor.getString(cursor.getColumnIndex("jsondata")); } return data; } }
//MainActivity public class MainActivity extends AppCompatActivity { private List<Bean.DataBean> data=new ArrayList<>(); private PullToRefreshListView lw; String path="http://api.expoon.com/AppNews/getNewsList/type/1/p/1"; int i; int j; private MyAdapter adapter; private Dao dao; private Bean bean; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); lw = findViewById(R.id.lw); lw.setMode(PullToRefreshBase.Mode.BOTH); lw.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() { @Override public void onPullDownToRefresh(PullToRefreshBase<ListView> refreshView) { i=1; j=1; path="http://api.expoon.com/AppNews/getNewsList/type/1/p/"+i; read(); } @Override public void onPullUpToRefresh(PullToRefreshBase<ListView> refreshView) { i++; j=2; path="http://api.expoon.com/AppNews/getNewsList/type/1/p/"+i; read(); } }); dao = new Dao(this); read(); } private void read(){ if (NetWorkUtil.isConn(MainActivity.this)) { MyTask myTask=new MyTask(new MyTask.Icallback() { @Override public void updateUiByjson(String string) { dao.insertData(path,string); Gson gson=new Gson(); bean = gson.fromJson(string, Bean.class); //data = bean.getData(); if(j==1){ data.clear(); } //添加新的集合数据 data.addAll(bean.getData()); //设置适配器 setLvAdapter(); //关闭头尾视图 lw.onRefreshComplete(); } }); myTask.execute(path); }else{ //NetWorkUtil.showNoNetWorkDlg(MainActivity.this); String data1 = dao.queryData(path); Gson gson=new Gson(); bean = gson.fromJson(data1, Bean.class); List<Bean.DataBean> list=bean.getData(); if (j==1){ data.clear(); } data.addAll(list); setLvAdapter(); lw.onRefreshComplete(); } } public void setLvAdapter(){ if(adapter==null){ adapter = new MyAdapter(); lw.setAdapter(adapter); }else { adapter.notifyDataSetChanged(); } }