创建数据库
package com.example.mnyk;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
public class OpenHolper extends SQLiteOpenHelper {
public OpenHolper(Context context) {
//基本参数 数据库名 版本号
super(context, "lz",null,1);
}
//创建数据库
@Override
public void onCreate(SQLiteDatabase sqLiteDatabase) {
/*
CREATE TABLE "" (
id INTEGER PRIMARY KEY AUTOINCREMENT,
title VARCHAR,
image VARCHAR,
imagetwo VARCHAR,
imagethree VARCHAR);
*/
sqLiteDatabase.execSQL("create table dz(id INTEGER PRIMARY KEY AUTOINCREMENT,title VARCHAR,image VARCHAR,imagetwo VARCHAR,imagethree VARCHAR)");
}
@Override
public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {
}
}
数据库的具体操作 增删改查
package com.example.mnyk;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import java.util.ArrayList;
import java.util.List;
//进行数据库增删改查
public class SqlLite {
//获取数据库对象
SQLiteDatabase db;
public SqlLite(Context context) {
this.db = new OpenHolper(context).getWritableDatabase();
}
//添加
public void add(DataItem.DataBean data){
db.execSQL("insert into dz (title,image,imagetwo,imagethree) values (?,?,?,?);",new String[]{data.getTitle(),data.getThumbnail_pic_s(),data.getThumbnail_pic_s02(),data.getThumbnail_pic_s03()});
}
//删除
public void delete(DataItem.DataBean data){
}
//查询
public List<DataItem.DataBean> select(){
List<DataItem.DataBean> list = new ArrayList<>();
Cursor result = db.query("dz", new String[]{"title", "image", "imagetwo", "imagethree"}, null, null, null, null, null);
while (result.moveToNext()){
DataItem.DataBean item = new DataItem.DataBean();
item.setTitle(result.getString(0));
item.setThumbnail_pic_s(result.getString(1));
item.setThumbnail_pic_s02(result.getString(2));
item.setThumbnail_pic_s03(result.getString(3));
list.add(item);
}
return list;
}
}
判断是否有网络
当有网络时,进入页面使用网络加载数据,并将列表数据保存到数据库,当没有网络时,将从数据库读取数据并做展示
package com.example.mnyk;
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ListView;
import android.widget.Toast;
import com.example.xlistview.me.maxwin.view.XListView;
import com.google.gson.Gson;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
public class HotFragment extends android.support.v4.app.Fragment {
private View view;
private XListView lv;
private ArrayList<DataItem> dataItems;
private MAdapter mAdapter;
private String url = "http://www.xieast.com/api/news/news.php?count=10&page=";
private int page = 1;
private SqlLite sqlLite;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
view = View.inflate(getActivity(), R.layout.fragment_hot, null);
//获取资源id
lv = (XListView) view.findViewById(R.id.lv);
dataItems = new ArrayList<DataItem>();
mAdapter = new MAdapter(getActivity());
//设置XListView监听
lv.setXListViewListener(new XListView.IXListViewListener() {
@Override
public void onRefresh() {
//下拉刷新
page = 1;
initData(page);
}
@Override
public void onLoadMore() {
//上拉加载
page = page+1;
initData(page);
}
});
//注意 : 一定要写上这句话 否则不能实现加载更多
//可加载
lv.setPullLoadEnable(true);
//初始化网络数据
initData(page);
lv.setAdapter(mAdapter);
return view;
}
//加载网络数据
private void initData(final int page) {
//如果查询为空 则创建对象
if (sqlLite == null){
sqlLite = new SqlLite(getActivity());
}
//如果没有网络 就从数据库中加载
if(!Network()){
List<DataItem.DataBean> result = sqlLite.select();
mAdapter.setDatas(result);
Toast.makeText(getActivity(),"网络消失了",Toast.LENGTH_SHORT).show();
lv.stopRefresh();
lv.stopLoadMore();
return;
}
new AsyncTask<String, Void, List<DataItem.DataBean>>() {
@Override
protected List<DataItem.DataBean> doInBackground(String... strings) {
DataItem dataItem = Util.ResponseBean(strings[0],DataItem.class);
return dataItem.getData();
}
@Override
protected void onPostExecute(List<DataItem.DataBean> dataBeans) {
if (dataBeans == null){
Toast.makeText(getActivity(),"请求网络数据失败",Toast.LENGTH_SHORT).show();
return;
}
//循环遍历每一条数据 添加到数据库
for (int i = 0 ; i < dataBeans.size(); i++){
sqlLite.add(dataBeans.get(i));
}
if (page == 1){
mAdapter.setDatas(dataBeans);
}else {
mAdapter.addDatas(dataBeans);
}
lv.stopLoadMore();
lv.stopRefresh();
}
}.execute(url+page);
}
//判断网络
public Boolean Network(){
//获取网络连接管理类
ConnectivityManager systemService = (ConnectivityManager) getActivity().getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo info = systemService.getActiveNetworkInfo();
return info != null && info.isAvailable();
}
}