main

import android.os.Handler;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
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.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;

import java.net.URL;

import java.util.ArrayList;
import java.util.List;

public class MainActivity extends AppCompatActivity {

    private PullToRefreshListView plv;
    private JsonCacheDao jsonCacheDao;
    private int pageIndex=1;
    private String gao="https://api.tianapi.com/wxnew/?key=48a7d7193e11bd2dd4a683b6e2f90a4f&num=10&page="+pageIndex;
    //定义大集合
    private List<Bean.NewslistBean> dataAll=new ArrayList<>();
    private  MyAdapter adapter;
    private int operType=1;//代表刷新,加载更多
    private  Handler handler= new Handler(){
        @Override
        public void handleMessage(Message mssuper) {
            List<Bean.NewslistBean> lists=( List<Bean.NewslistBean>)mssuper.obj;
            //显示数据
            showData(lists);
        }
        private JsonCacheDao jsonCacheDao;


    };
    //设置适配器
    private  void setLvAdapter(){
    if (adapter==null){
    adapter=new MyAdapter(MainActivity.this,dataAll);
            plv.setAdapter(adapter);
    }
    else{
        //刷新
        adapter.notifyDataSetChanged();
    }
    }
   private void requestNetData (){
      //进行联网判断
     if (NetStataeUtil.isConn(this)) {
         new Thread() {
             @Override
             public void run() {
                 //    super.run(){
                 try {
                     URL url = new URL(gao);
                     //打开连接
                     HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
                     //进行设置
                     urlConnection.setRequestMethod("GET");
                     urlConnection.setReadTimeout(5000);
                     urlConnection.setConnectTimeout(5000);
                     //响应码判断
                     int responseCode = urlConnection.getResponseCode();
                     if (responseCode == 200) {
                         //5.获取数据
                         InputStream inputStream = urlConnection.getInputStream();

                         String content = stremToString(inputStream);

                         //插入到数据库
                         jsonCacheDao.insertData(gao, content);

                         //进行解析
                         List<Bean.NewslistBean> newslist = asyncJson(content);

                         //发送消息
                         Message msg = Message.obtain();
                         msg.obj = newslist;
                         handler.sendMessage(msg);
                     }

                 } catch (Exception e) {

                     e.printStackTrace();
                 }
             }
         }.start();
     }
             else{//无网状态
              Log.d("zzz","---无网状态,查询数据库中的数据---");
              //NetStateUtil.showNoNetWorkDlg(this);
              Toast.makeText(this,"现在没有网络,请稍后重试!",Toast.LENGTH_SHORT).show();
              //根据现在的url查询出相应的json数据
              String s = jsonCacheDao.queryData(gao);

              //解析,展示
              List<Bean.NewslistBean> newslistBeans = asyncJson(s);
              showData(newslistBeans);

          }


      }
//展示数据
    private void showData(List<Bean.NewslistBean> lists) {
        if(operType==1){
            dataAll.clear();//清空集合中的所有数据
        }
        dataAll.addAll(lists);
        //设置适配器
        setLvAdapter();
        plv.onRefreshComplete();

    }

    ;


    public   List<Bean.NewslistBean> asyncJson(String json){
        Gson gson=new Gson();//json
        Bean data=gson.fromJson(json, Bean.class);
        //从对象中获取列表要显示的集体数据
        List<Bean.NewslistBean> newslist = data.getNewslist();
        return  newslist;
    }
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //找控件设置
       plv= findViewById(R.id.plv);
        jsonCacheDao = new JsonCacheDao(this);
  innitPlv();
        requestNetData();
    }
    private void innitPlv() {
        //1.设置支持的模式  BOTH:支持上下拉刷新    PULL_FROM_END:只支持加载更多  PULL_FROM_START:只支持下拉刷新
        plv.setMode(PullToRefreshBase.Mode.BOTH);
        //设置上下拉的监听事件
        plv.setMode(PullToRefreshBase.Mode.BOTH);
        //2.设置上下拉刷新的监听事件
        plv.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() {
            @Override
            public void onPullDownToRefresh(PullToRefreshBase<ListView> pullToRefreshBase) {
                //下拉刷新操作
                operType = 1;
                pageIndex = 1;
                gao = "https://api.tianapi.com/wxnew/?key=48a7d7193e11bd2dd4a683b6e2f90a4f&num=10&page=" + pageIndex;
                //可以重复刷新
                requestNetData();


            }

            @Override
            public void onPullUpToRefresh(PullToRefreshBase<ListView> pullToRefreshBase) {
                //上拉加载更多操作
                operType = 2;
                pageIndex++;
                gao = "https://api.tianapi.com/wxnew/?key=48a7d7193e11bd2dd4a683b6e2f90a4f&num=10&page=" + pageIndex;
                requestNetData();


            }
        });
    }

    public String stremToString(InputStream stream) {
        StringBuilder builder = new StringBuilder();

        try {
            BufferedReader reader = new BufferedReader(new InputStreamReader(stream));
            String str;
            while ((str = reader.readLine()) != null) {
                builder.append(str);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }


        return builder.toString();


    }
   }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值