public class SQLiteHelper extends SQLiteOpenHelper {
public SQLiteHelper(Context context) {
super(context, "Test.db", null, 1);
}
@Override
public void onCreate(SQLiteDatabase sqLiteDatabase) {
sqLiteDatabase.execSQL("create table jsonData(id integer primary key autoincrement," +
"url text not null," +
"json text not null)");
}
@Override
public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {
}
}
public class JsonDao {
private final SQLiteHelper helper;
public JsonDao(Context context) {
helper = new SQLiteHelper(context);
}
//先删除再添加
public void insert(String url,String json){
SQLiteDatabase database = helper.getWritableDatabase();
database.delete("jsonData","url=?",new String[]{url});
ContentValues values = new ContentValues();
values.put("url",url);
values.put("json",json);
database.insert("jsonData",null,values);
}
//查询
public String select(String url){
SQLiteDatabase database = helper.getWritableDatabase();
Cursor cursor = database.query("jsonData", null, "url=?", new String[]{url}, null, null, null);
String json="";
while (cursor.moveToNext()){
json=cursor.getString(cursor.getColumnIndex("json"));
}
return json;
}
}
public class MainActivity extends AppCompatActivity {
private PullToRefreshListView ptr_lv;
private String urlString="http://api.expoon.com/AppNews/getNewsList/type/1/p/";
private int page;
private List<JavaBean.DataBean> list=new ArrayList<JavaBean.DataBean>();
private JsonDao dao;
private MyAdapter adapter;
private Handler handler=new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
if (msg.what == 0) {
adapter.notifyDataSetChanged();
ptr_lv.onRefreshComplete();
}
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ptr_lv = (PullToRefreshListView) findViewById(R.id.ptr_lv);
dao = new JsonDao(MainActivity.this);
//允许上下拉加载刷新
ptr_lv.setMode(PullToRefreshBase.Mode.BOTH);
//配置适配器
adapter = new MyAdapter();
ptr_lv.setAdapter(adapter);
//获取数据
getNetData(0);
ptr_lv.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() {
@Override
public void onPullDownToRefresh(PullToRefreshBase<ListView> pullToRefreshBase) {
list.clear();
getNetData(0);
}
@Override
public void onPullUpToRefresh(PullToRefreshBase<ListView> pullToRefreshBase) {
page++;
getNetData(page);
}
});
}
private void getNetData(int page) {
final String url=urlString+page;
//判断网络状态
if (NetTypeUtil.getNetType(MainActivity.this) == -1) {
Toast.makeText(MainActivity.this, "请检查网络连接!", Toast.LENGTH_SHORT).show();
String json = dao.select(url);
if (!json.isEmpty()){
Gson gson = new Gson();
JavaBean javaBean = gson.fromJson(json, JavaBean.class);
list.addAll(javaBean.getData());
adapter.notifyDataSetChanged();
ptr_lv.onRefreshComplete();
}
}else{
new Thread(){
@Override
public void run() {
super.run();
String netJson = NetUtil.getNetJson(url);
Gson gson = new Gson();
JavaBean javaBean = gson.fromJson(netJson, JavaBean.class);
list.addAll(javaBean.getData());
//存入数据库
dao.insert(url,netJson);
//刷新适配器,关闭上下拉视图
handler.sendEmptyMessage(0);
}
}.start();
}
}
public class MyAdapter extends BaseAdapter {
private ImageLoader imageLoaderInstance=ImageLoader.getInstance();
@Override
public int getCount() {
return list.size();
}
@Override
public Object getItem(int i) {
return list.get(i);
}
@Override
public long getItemId(int i) {
return i;
}
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
ViewHolder holder;
if (view==null){
view=View.inflate(MainActivity.this, R.layout.item1_layout,null);
holder=new ViewHolder();
holder.img=view.findViewById(R.id.img);
holder.text1=view.findViewById(R.id.text1);
view.setTag(holder);
} else {
holder= (ViewHolder) view.getTag();
}
imageLoaderInstance.displayImage(list.get(i).getPic_url(), holder.img, ImageLoaderUtil.getOptions());
holder.text1.setText(list.get(i).getNews_title());
return view;
}
class ViewHolder{
private ImageView img;
private TextView text1;
}
}
}
public class SQLiteHelper extends SQLiteOpenHelper { public SQLiteHelper(Context context) { super(context, "Test.db", null, 1); } @Override public void onCreate(SQLiteDatabase...