将网络请求的数据加入数据库,listview展示数据,默认从数据库里显示
首先创建SQlite类
public class SQLite extends SQLiteOpenHelper { public SQLite(Context context) { super(context, "person.db", null, 1);//创建数据库 } @Override public void onCreate(SQLiteDatabase db) { db.execSQL("create table user(_id Integer primary key autoincrement,title
varchar(20),imageurl varchar(20))"); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { } }
再创建SQLiteDao类,写增加、查询的方法:
public class SQLiteDao { private final SQLiteDatabase db; public SQLiteDao(Context context){ SQLite sqLite = new SQLite(context); db = sqLite.getWritableDatabase(); } public boolean addData(String title,String imageurl){ ContentValues values = new ContentValues(); values.put("title",title); values.put("imageurl",imageurl); long result = db.insert("user", null, values); if (result!=-1){ return true; }else{ return false; } } public ArrayList<Data.DataBean> findData(){ Cursor cursor = db.query(false, "user", null, null, null, null, null, null, null); ArrayList<Data.DataBean> datas = new ArrayList<>(); while (cursor.moveToNext()){ String title = cursor.getString(cursor.getColumnIndex("title")); String imageurl = cursor.getString(cursor.getColumnIndex("imageurl")); Data.DataBean dataBean = new Data.DataBean(); dataBean.setNews_title(title); dataBean.setPic_url(imageurl); datas.add(dataBean); } return datas; } }
然后就在MainActivity里操作:
定义:
private ArrayList<Data.DataBean> datas; private SQLiteDao dao;在onCreate里初始化:
dao=new SQLiteDao(this);lv= (ListView) findViewById(R.id.lv);//listview控件 getHttp(); //获取网络数据 datas=dao.findData();//调用SqliteDao里的查询方法 adapter=new MyBaseAdapter(MainActivity.this,datas);//加载数据库里的数据 lv.setAdapter(adapter);//获得适配器private void getHttp() { RequestParams requestParams=new RequestParams("http://api.expoon.com/AppNews/g etNewsList/type/1/p/1");//数据连接 x.http().get(requestParams, new Callback.CommonCallback<String>() { @Override //xutils网络请求 public void onSuccess(String result) { //成功的方法 Data data = new Gson().fromJson(result, Data.class);//解析Gson数据 list=data.getData(); //list集合获取解析后的数据 adapter=new MyBaseAdapter(MainActivity.this,list); lv.setAdapter(adapter);//加载网络数据 if (datas.size()==0){//如果数据库里没数据 for (Data.DataBean lists:list){ boolean b = dao.addData(lists.getNews_title(), lists.getPic_url ());//把请求到的数据添加到数据库 if (b){ Toast.makeText(MainActivity.this, "添加成功", Toast.LENGTH_ SHORT).show(); }else { Toast.makeText(MainActivity.this, "添加失敗", Toast.LENGTH_ SHORT).show(); } } } } @Override public void onError(Throwable ex, boolean isOnCallback) { } @Override public void onCancelled(CancelledException cex) { } @Override public void onFinished() { } }); }