MainActivity
private PullToRefreshListView plv; String baseUrl = "https://api.tianapi.com/wxnew/?key=48a7d7193e11bd2dd4a683b6e2f90a4f&num=10&page="; private int page = 0; ArrayList<Product.NewslistBean> list = new ArrayList<>(); Handler handler = new Handler(){ @Override public void handleMessage(Message msg) { super.handleMessage(msg); int what = msg.what; if (what==1){ String json = (String) msg.obj; jsonDao.insertData(baseUrl + page,json); Gson gson = new Gson(); Product product = gson.fromJson(json, Product.class); List<Product.NewslistBean> newslist = product.getNewslist(); list.addAll(newslist); adapater.notifyDataSetChanged(); plv.onRefreshComplete(); } if (what==0){ adapater.notifyDataSetChanged(); plv.onRefreshComplete(); } } }; private MyAdapater adapater; private ImageLoader imageLoader; private JsonDao jsonDao; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //加载布局 setContentView(R.layout.activity_main); //加载资源ID plv = findViewById(R.id.plv); plv.setMode(PullToRefreshBase.Mode.BOTH);//设置支持上下拉 //数据Dao层 jsonDao = new JsonDao(this); imageLoader = ImageLoader.getInstance(); //适配器 adapater = new MyAdapater(); plv.setAdapter(adapater); //请求数据 getNetData(0); plv.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() { @Override public void onPullDownToRefresh(PullToRefreshBase<ListView> pullToRefreshBase) { list.clear(); getNetData(0); } @Override public void onPullUpToRefresh(PullToRefreshBase<ListView> pullToRefreshBase) { page++; getNetData(page); } }); } private void getNetData(final int page) { String murl = baseUrl + page; int type = NetStateUtil.isConn(this); if(type!=-1){ //开一个线程 new Thread(new Runnable() { @Override public void run() { //拿到数据 String json = NetUtils.getNetjson(baseUrl + page); Message msg = new Message(); msg.what = 1; msg.obj = json; handler.sendMessage(msg); /*jsonDao.insertData(baseUrl + page,json); 注:这个要在主线程中进行添加 Gson gson = new Gson(); Product product = gson.fromJson(json, Product.class); List<Product.NewslistBean> newslist = product.getNewslist(); list.addAll(newslist); handler.sendEmptyMessage(0);*/ } }).start(); }else { //从数据库查询 String s = jsonDao.queryData(murl); if (!s.isEmpty()){ Gson gson = new Gson(); Product product = gson.fromJson(s, Product.class); List<Product.NewslistBean> newslist = product.getNewslist(); list.addAll(newslist); handler.sendEmptyMessage(0); } } } private class MyAdapater extends BaseAdapter{ @Override public int getCount() { return list.size(); } @Override public Object getItem(int position) { return list.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder; if(convertView==null){ convertView = View.inflate(MainActivity.this,R.layout.item_layout,null); holder = new ViewHolder(); holder.imgview = (ImageView)convertView.findViewById(R.id.imgview); holder.textview = (TextView) convertView.findViewById(R.id.textview); convertView.setTag(holder); }else { holder = (ViewHolder) convertView.getTag(); } holder.textview.setText(list.get(position).getTitle()); //调用设置图片 DisplayImageOptions displayImageOption = NetUtils.getDisplayImageOption(); imageLoader.displayImage(list.get(position).getPicUrl(),holder.imgview,displayImageOption); return convertView; } class ViewHolder{ public ImageView imgview; public TextView textview; } }