資料載入(有網路是請求網路資料 無網路時載入資料庫資料)
阿新 • • 發佈:2018-11-17
//NetWork 進行網路判斷
import android.content.Context; import android.net.ConnectivityManager; import android.net.NetworkInfo; public class NetWork { public static boolean isNetWork(Context context){ ConnectivityManager manager = (ConnectivityManager) context.getSystemService(context.CONNECTIVITY_SERVICE); NetworkInfo info = manager.getActiveNetworkInfo(); if (info!=null){ return true; } return false; } }
//Fragment
import android.annotation.SuppressLint; import android.content.Intent; import android.os.AsyncTask; import android.os.Bundle; import android.os.Environment; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.ListView; import android.widget.Toast; import com.google.gson.Gson; import com.handmark.pulltorefresh.library.PullToRefreshBase; import com.handmark.pulltorefresh.library.PullToRefreshListView; import java.io.DataOutput; import java.util.List; @SuppressLint("ValidFragment" class Afragment extends android.support.v4.app.Fragment { PullToRefreshListView pulllist; MMAdapter adapter; User user; Dao dao; @Nullable @Override public View onCreateView(@NonNull final LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view = View.inflate(getActivity(), R.layout.afrag, null); pulllist=view.findViewById(R.id.pulllist); //建立dao層 dao = new Dao(getActivity()); //建立介面卡 adapter = new MMAdapter(getActivity()); //進行網路判斷 boolean netWork = NetWork.isNetWork(getActivity()); if (!netWork){ 沒有網路時 Toast.makeText(getActivity(),"沒有網路了",Toast.LENGTH_LONG).show(); List<User.DataBean> query = dao.query(); adapter.setData(query); pulllist.setAdapter(adapter); }else { //載入資料 loadData(); //設定介面卡 pulllist.setAdapter(adapter); return view; } private void loadData() { new AsyncTask<String,Void,List<User.DataBean>>(){ @Override protected List<User.DataBean> doInBackground(String... strings) { //請求網路資料 String string = HttpUrlUtils.requestData("http://www.xieast.com/api/news/news.php?type=top&page=1"); user = new Gson().fromJson(string, User.class); //新增到資料庫 for (int i=0;i<user.getData().size();i++){ dao.insert(user.getData().get(i).getTitle(),user.getData().get(i).getThumbnail_pic_s(),user.getData().get(i).getThumbnail_pic_s02(),user.getData().get(i).getThumbnail_pic_s03()); } //查詢 dao.query(); return user==null?null:user.getData(); } @Override protected void onPostExecute(List<User.DataBean> data) { //進來就載入 adapter.setData(user.getData()); pulllist.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() { @Override public void onPullDownToRefresh(PullToRefreshBase<ListView> refreshView) { new update().execute(); } @Override public void onPullUpToRefresh(PullToRefreshBase<ListView> refreshView) { new update().execute(); } }); } }.execute("http://www.xieast.com/api/news/news.php?type=top&page=1"); } public class update extends AsyncTask<String,Void,List<User.DataBean>>{ @Override protected List<User.DataBean> doInBackground(String... strings) { try { Thread.sleep(2000); //重新整理時間 } catch (InterruptedException e) { e.printStackTrace(); } return null; } @Override protected void onPostExecute(List<User.DataBean> data) { //新增資料 adapter.addData(user.getData()); pulllist.onRefreshComplete(); } } }
Dao
import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.util.Log; import java.util.ArrayList; import java.util.List; class Dao { List<User.DataBean> datalist; SQLiteDatabase database; public Dao(Context context){ Mhelpr mhelpr = new Mhelpr(context); database = mhelpr.getReadableDatabase(); } //新增 public void insert(String title, String thumbnail_pic_s,String thumbnail_pic_s02,String thumbnail_pic_s03) { ContentValues values = new ContentValues(); values.put("title",title); values.put("thumbnail_pic_s",thumbnail_pic_s); values.put("thumbnail_pic_s02",thumbnail_pic_s02); values.put("thumbnail_pic_s03",thumbnail_pic_s03); database.insert("users",null,values); } public List<User.DataBean> query() { Cursor cursor = database.rawQuery("select * from users", null); datalist = new ArrayList<>(); //建立集合 while (cursor.moveToNext()){ String title = cursor.getString(cursor.getColumnIndex("title")); String img1 = cursor.getString(cursor.getColumnIndex("thumbnail_pic_s")); String img2 = cursor.getString(cursor.getColumnIndex("thumbnail_pic_s02")); String img3 = cursor.getString(cursor.getColumnIndex("thumbnail_pic_s03")); User.DataBean dataBean = new User.DataBean(title,img1,img2,img3); datalist.add(dataBean); Log.e("1erq",dataBean.toString()); } return datalist; } }
Mhelper
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.support.annotation.Nullable;
public class Mhelpr extends SQLiteOpenHelper {
public Mhelpr(@Nullable Context context) {
super(context, "users.db", null, 1);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("create table users(title text,thumbnail_pic_s text,thumbnail_pic_s02 text,thumbnail_pic_s03 text)");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}