列表展示+数据库主页面
public class TabFragment extends Fragment {
private PullToRefreshListView pul;
private MyAdapter madapter;
private MovieBean gson;
private List<MovieBean.ResultBean> list=new ArrayList<>();
private String url;
private int page=1;
private UserDao dao;
private MovieBean movieBean;
private NeUtil neUtil;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view=inflater.inflate(R.layout.tabfragment,container,false);
//获取资源id
pul=view.findViewById(R.id.pul);
dao=new UserDao(getActivity());
//获取地址
url=getArguments().getString("url");
//初始化page
page = 1;
//获取NeUtil类,实例
neUtil = new NeUtil();
//适配器
madapter = new MyAdapter(getActivity());
//模式
pul.setMode(PullToRefreshBase.Mode.BOTH);
pul.setAdapter(madapter);
//判断有网无网的方法
initdata();
//上拉加载下拉刷新
setlistener();
return view;
}
private void initdata() {
if (!neUtil.has(getActivity())){
//吐司
Toast.makeText(getActivity(),"联网失败",Toast.LENGTH_SHORT).show();
madapter.setList(dao.select());
return;
}else{
//创建一个异步请求类
new MoviewTask().execute(url+page);
}
}
//上拉加载下拉刷新
private void setlistener() {
//设置监听事件
pul.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2() {
@Override
public void onPullDownToRefresh(PullToRefreshBase refreshView) {
page=1;
new MoviewTask().execute(url+page);
}
@Override
public void onPullUpToRefresh(PullToRefreshBase<ListView> refreshView) {
new MoviewTask().execute(url+(++page));
}
});
}
class MoviewTask extends AsyncTask<String,Void,List<MovieBean.ResultBean>>{
@Override
protected List<MovieBean.ResultBean> doInBackground(String... strings) {
try {
String s = HttpUtils.get(strings[0]);
Gson gson = new Gson();
movieBean = gson.fromJson(s, MovieBean.class);
//清空数据
dao.delect();
//无网状态下添加到数据库
for (int i = 0; i< movieBean.getResult().size(); i++){
dao.add(movieBean.getResult().get(i).getName(), movieBean.getResult().get(i).getSummary(),
movieBean.getResult().get(i).getImageUrl(),movieBean.getResult().get(i).getId());
}
return dao.select();
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
//展示数据
@Override
protected void onPostExecute(List<MovieBean.ResultBean> resultBeans) {
super.onPostExecute(resultBeans);
//添加数据
if (page==1){
madapter.setList(resultBeans);
}else {
madapter.addList(resultBeans);
}
//停止刷新加载
pul.onRefreshComplete();
}
}
}
创建数据库
public class SqliteHelper extends SQLiteOpenHelper {
public SqliteHelper(Context context) {
super(context, “User.db”, null, 1);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("create table users (id integer primary key ," +
"name text," +
"summary text," +
"imageUrl text)");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}
Dao层方法
public class UserDao {
private final SQLiteDatabase db;
public UserDao(Context context) {
SqliteHelper helper = new SqliteHelper(context);
db = helper.getReadableDatabase();
}
//查询
public List<MovieBean.ResultBean> select(){
Cursor query = db.query("users", null, null, null, null, null, null);
List<MovieBean.ResultBean> list=new ArrayList<>();
while (query.moveToNext()){
String name = query.getString(query.getColumnIndex("name"));
String summary = query.getString(query.getColumnIndex("summary"));
String imageUrl = query.getString(query.getColumnIndex("imageUrl"));
int id = query.getInt(query.getColumnIndex("id"));
list.add(new MovieBean.ResultBean(imageUrl,name,summary,id));
}
return list;
}
//添加
public void add(String name,String summary, String imageUrl,int id){
ContentValues values=new ContentValues();
values.put("name",name);
values.put("summary",summary);
values.put("imageUrl",imageUrl);
values.put("id",String.valueOf(id));
db.insert("users",null,values);
}
//清空数据
public void delect(){
db.execSQL(“DELETE FROM users”);
}
}
数据库工具类
public class NeUtil {
public boolean has(Context context){
//创建连接管理器
ConnectivityManager con = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
//获取最新流动状态
NetworkInfo activeNetworkInfo = con.getActiveNetworkInfo();
return activeNetworkInfo!=null&&activeNetworkInfo.isAvailable() ;
}
}