根据网络状态,添加数据到数据库

版权声明:叮叮叮!!!! https://blog.csdn.net/Xuexx_520/article/details/83378034

判断网络状态,有网时HttpUrlConnection获取网络数据并且把数据添加到数据库,实现下拉加载上拉刷新。

无网时,把数据库中的内容进行展示

package com.example.xxx.month1.fragment;


import android.app.Fragment;
import android.content.Context;
import android.content.Intent;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.Toast;

import com.example.mylibrary.me.maxwin.view.XListView;
import com.example.xxx.month1.R;
import com.example.xxx.month1.activity.Main3Activity;
import com.example.xxx.month1.adapter.XlvAdapter;
import com.example.xxx.month1.bean.News;
import com.example.xxx.month1.db.NewsDao;
import com.example.xxx.month1.util.HttpUtil;
import com.google.gson.Gson;

import java.util.ArrayList;

/**
 * A simple {@link Fragment} subclass.
 */
public class NewsFragment extends Fragment {
  String url;
  private XListView xlv;
  private int page=1;
  private XlvAdapter xlvAdapter;
  //private ArrayList<News.DataBean> news;
  NewsDao dao;
  private ArrayList<News.DataBean> dblist;
private boolean flag=false,flag2=false;



    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Bundle bundle=getArguments();
        url=bundle.getString("urls");
       // news=new ArrayList<>();
        dao=new NewsDao(getActivity());
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
       View view=inflater.inflate(R.layout.fragment_news, container, false);

       initView(view);
       //添加适配器
       xlvAdapter=new XlvAdapter(getActivity());
       xlv.setAdapter(xlvAdapter);
       //设置监听
       xlv.setXListViewListener(new XListView.IXListViewListener() {
           @Override
           public void onRefresh() {
               page=1;
               loadData();
           }

           @Override
           public void onLoadMore() {
         loadData();
           }
       });

       xlv.setPullLoadEnable(true);
       loadData();
       xlv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
           @Override
           public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
               Intent intent=new Intent(getActivity(),Main3Activity.class);

               intent.putExtra("url",xlvAdapter.getItem(position - 1).getUrl());

               startActivity(intent);
           }
       });


        return view;
    }

   //判断是否有网络
    public static boolean hasNetWork(Context context){
        ConnectivityManager connectivityManager= (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo info=connectivityManager.getActiveNetworkInfo();
        if(info!=null){
            return true;
        }
        return false;
    }

    private void canLoadMore(boolean b) {
        xlv.setPullLoadEnable(b);
    }
 //加载数据
    private void loadData() {
        //如果没有网
        if(!hasNetWork(getActivity())){
            Toast.makeText(getActivity(),"啊~~~~网断了",Toast.LENGTH_SHORT).show();
            dblist=dao.query();
           xlvAdapter.setgetNewsData(dblist);

            return;
        }
        //如果有网络
        final String path=url+page;
        new AsyncTask<String,Void,ArrayList<News.DataBean>>(){

            @Override
            protected ArrayList<News.DataBean> doInBackground(String... strings) {
                String textString=HttpUtil.getHttpUrl(strings[0]);
                News  news=new Gson().fromJson(textString,News.class);

                return (ArrayList<News.DataBean>) news.getData();
            }

            @Override
            protected void onPostExecute(ArrayList<News.DataBean> dataBeans) {
                super.onPostExecute(dataBeans);
                updateData(dataBeans);
                completedLoad();
                Log.e("ss", dataBeans.size()+"" );

            }
        }.execute(path);


    }
//完成加载
    private void completedLoad() {
        page++;
        xlv.stopLoadMore();
        xlv.stopRefresh();
    }
//修改数据
    private void updateData(ArrayList<News.DataBean> dataBeans) {

        if(page==1){
            xlvAdapter.setData(dataBeans);
           //news=dataBeans;
          if(flag==false){
               //第一次进去存入数据库
               dao.add(dataBeans);
               flag=true;
               Toast.makeText(getActivity(),"添加成功",Toast.LENGTH_SHORT).show();
           } else {//再次刷新不添加
               Toast.makeText(getActivity(),"已经添加过了",Toast.LENGTH_SHORT).show();
           }

        } else {
            xlvAdapter.addData(dataBeans);
            //news.addAll(dataBeans);
            //存入数据库
            if(flag2==false){
                dao.add(dataBeans);
                Toast.makeText(getActivity(),"添加成功",Toast.LENGTH_SHORT).show();
            }
        }
    }

    private void initView(View view) {
           xlv=view.findViewById(R.id.xlv);

    }

}

点击条目,跳转到Main3Activity

利用webview加载网址

package com.example.xxx.month1.activity;

import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.KeyEvent;
import android.webkit.WebView;
import android.webkit.WebViewClient;

import com.example.xxx.month1.R;

public class Main3Activity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main3);

        Intent intent=getIntent();
        //获得传过来的url
        String url=intent.getStringExtra("url");
        WebView webView=findViewById(R.id.web);
        webView.loadUrl(url);
        //不跳出App
        webView.setWebViewClient(new WebViewClient(){
            @Override
            public boolean shouldOverrideKeyEvent(WebView view, KeyEvent event) {
                return super.shouldOverrideKeyEvent(view, event);
            }
        });
    }
}

创建数据库,写sql语句,进行增删改查

package com.example.xxx.month1.db;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

public class MHelper extends SQLiteOpenHelper {
    public MHelper(Context context) {
        super(context,"mdb", null, 1);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        //创建表
        db.execSQL("create table news (title text,url text,iv1 text,iv2 text,iv3 text)");
    }

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

    }
}
package com.example.xxx.month1.db;

import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;

import com.example.xxx.month1.bean.News;

import java.util.ArrayList;

public class NewsDao {
    private SQLiteDatabase database;
    private MHelper helper;
    private ArrayList<News.DataBean> list;

    public NewsDao(Context context) {
        helper=new MHelper(context);
        database=helper.getReadableDatabase();
    }
    //添加方法
    public void add(ArrayList<News.DataBean> list){
        for (News.DataBean dataBean:list) {
            database.execSQL("insert into news(title,url,iv1,iv2,iv3) values (?,?,?,?,?)", new String[]{
                    dataBean.getTitle(),dataBean.getUrl(),dataBean.getThumbnail_pic_s(),dataBean.getThumbnail_pic_s02(),dataBean.getThumbnail_pic_s03()
            });
        }
    }
    //查询方法
    public ArrayList<News.DataBean> query(){
        Cursor cursor=database.rawQuery("select * from news", null);
        list=new ArrayList<News.DataBean>();
        while(cursor.moveToNext()){

            String title=cursor.getString(cursor.getColumnIndex("title"));
            String url=cursor.getString(cursor.getColumnIndex("url"));
            String iv1=cursor.getString(cursor.getColumnIndex("iv1"));
            String iv2=cursor.getString(cursor.getColumnIndex("iv2"));
            String iv3=cursor.getString(cursor.getColumnIndex("iv3"));
            list.add(new News.DataBean(title,url,iv1,iv2,iv3));

        }
        return list;

    }
}

猜你喜欢

转载自blog.csdn.net/Xuexx_520/article/details/83378034
今日推荐