版权声明:叮叮叮!!!! 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;
}
}