Pulltorefresh 、SQLite数据库和判断网络请求

1.添加依赖

implementation ‘com.github.userswlwork:pull-to-refresh:1.0.0’
implementation ‘com.google.code.gson:gson:2.8.5’

2— 添加权限

3—添加布局

<com.handmark.pulltorefresh.library.PullToRefreshListView
android:id="@+id/plv"
android:layout_width=“match_parent”
android:layout_height=“match_parent”
/>

4.MainActivity

public class MainActivity extends AppCompatActivity {

private PullToRefreshListView pull;
ArrayList<String> alist=new ArrayList<String>();
String baseUrl = "http://www.93.gov.cn/93app/data.do?channelId=0&startNum=0";
private ArrayAdapter<String> adapter;
int page=0;
private JsonDao jsonDao;
private String murl;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    pull = findViewById(R.id.pull);
    adapter = new ArrayAdapter<String>(MainActivity.this,android.R.layout.simple_list_item_1,alist);
    pull.setAdapter(adapter);
    
    //构造数据流dao层
    jsonDao = new JsonDao(MainActivity.this);

    initData(page);
    pull.setMode(PullToRefreshBase.Mode.BOTH);
    pull.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() {
        @Override
        public void onPullDownToRefresh(PullToRefreshBase<ListView> pullToRefreshBase) {
            alist.clear();
            initData(0);
        }

        @Override
        public void onPullUpToRefresh(PullToRefreshBase<ListView> pullToRefreshBase) {
        page++;
        initData(page);
        }
    });

}

private void initData(int page) {
    murl = baseUrl + page;
    if (NetStateUtil.isConn(this)) {
        new MAsyncTask().execute(murl);
    }else{
        Toast.makeText(this,"当前没有网络,请稍后重试!",Toast.LENGTH_SHORT).show();
        //从数据库中查询
        String s = jsonDao.queryData(murl);
        //log
        Log.i("aaa",s.toString());
        if(!s.isEmpty()){
            parse(s);
        }
    }
}

private void parse(String s) {
    Gson gson = new Gson();
    Product product = gson.fromJson(s, Product.class);
    List<Product.DataBean> data = product.getData();

    ArrayList<String> aalist=new ArrayList<String>();
    for (int i = 0; i < data.size(); i++) {
        aalist.add(data.get(i).getTITLE());
    }
    alist.addAll(aalist);
    //
    Log.i("aaa",alist.toString());
    adapter.notifyDataSetChanged();
    pull.onRefreshComplete();
}

private class MAsyncTask extends AsyncTask<String,Void,String>{
    @Override
    protected String doInBackground(String... strings) {
        return NetWordUtils.getNetjson(strings[0]);
    }

    @Override
    protected void onPostExecute(String s) {
        super.onPostExecute(s);
        jsonDao.inserData(murl,s);
        parse(s);
    }
}

}

5.MyHelper创建表

public class MyHelper extends SQLiteOpenHelper {

public MyHelper(Context context) {
    super(context, "users.db", null, 1);
}

@Override
public void onCreate(SQLiteDatabase db) {
    db.execSQL("create table jsontable (id integer primary key autoincrement,url text not null,json text not null)");
}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

}

}

6.JsonDao

public class JsonDao {

private MyHelper myHelper;
String table="jsontable";
private String json;

public JsonDao(Context context) {
    myHelper = new MyHelper(context);
}

public String query(String url){
    SQLiteDatabase database = myHelper.getWritableDatabase();
    Cursor cursor = database.query(table, null, "url=?", new String[]{url}, null, null, null, null);
    while (cursor.moveToNext()){
        json = cursor.getString(cursor.getColumnIndex("json"));
    }
    return json;
}
public void insert(String url,String json){
    SQLiteDatabase database = myHelper.getWritableDatabase();
    database.delete(table,"url=?",new String[]{json});

    ContentValues values=new ContentValues();
    values.put("url",url);
    values.put("json",json);
    database.insert(table,null,values);
}

}

7.判断网络状态

public class NetStateUtil {

public static boolean isConn(Context context) {
    boolean haha=false;
    ConnectivityManager systemService = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo info = systemService.getActiveNetworkInfo();
    if (info!=null){
        haha =systemService.getActiveNetworkInfo().isAvailable();
    }
    return haha;
}

}

8.实体类
省略

猜你喜欢

转载自blog.csdn.net/qq_43603372/article/details/84176775
今日推荐