上代码
package com.example.yuekaoone.fragment;
import android.app.Fragment;
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.AsyncTask;
import android.util.Log;
import android.view.View;
import android.widget.ListView;
import android.widget.Toast;
import com.example.mylibrary.me.maxwin.view.XListView;
import com.example.yuekaoone.R;
import com.example.yuekaoone.adapter.ListViewAdapter;
import com.example.yuekaoone.bean.Bean;
import com.example.yuekaoone.bean.Convers;
import com.example.yuekaoone.bean.Shu;
import com.example.yuekaoone.dao.Dao;
import com.example.yuekaoone.dao.GetHttp;
import java.util.List;
public class B1Fragment extends BaseFragment {
XListView listview;
String url="http://www.xieast.com/api/news/news.php?page=";
int page = 1;
Dao dao;
ListViewAdapter adapter;
@Override
protected void inintdata(View view) {
listview.setXListViewListener(new XListView.IXListViewListener() {
@Override
public void onRefresh() {
page = 1;
loaddata(page);
}
@Override
public void onLoadMore() {
page = page+1;
loaddata(page);
}
});
listview.setPullLoadEnable(true);
adapter = new ListViewAdapter(getActivity());
loaddata(page);
listview.setAdapter(adapter);
}
@Override
protected void inintView(View view) {
listview = view.findViewById(R.id.listview);
dao = new Dao(getActivity());
}
@Override
protected int setcontent() {
return R.layout.fragment_b1;
}
public void loaddata(final int page){
if (!has()){
Toast.makeText(getActivity(), "没有网络", Toast.LENGTH_SHORT).show();
List<Shu> list11 = dao.cha();
adapter.setdata(Convers.db2response(list11));
}else{
new AsyncTask<String, Void, List<Bean.DataBean>>() {
@Override
protected List<Bean.DataBean> doInBackground(String... strings) {
Bean bean= GetHttp.get(strings[0],Bean.class);
return bean.getData();
}
@Override
protected void onPostExecute(List<Bean.DataBean> dataBeans) {
super.onPostExecute(dataBeans);
if (page==1){
adapter.setdata(dataBeans);
}else{
adapter.adddata(dataBeans);
}
if(page == 1) {
dao.delete();
Log.i("TEST", "after del count: " + dao.getDataCount());
}
//添加到数据库
for (int i=0;i<dataBeans.size();i++){
dao.add(dataBeans.get(i).getAuthor_name(),dataBeans.get(i).getThumbnail_pic_s(),dataBeans.get(i).getThumbnail_pic_s02(),dataBeans.get(i).getThumbnail_pic_s03());
}
Log.i("TEST", "count: " + dao.getDataCount());
listview.stopRefresh();
listview.stopLoadMore();
}
}.execute(url+page);
}
}
//判断网络
public boolean has() {
//获取网络工具类
ConnectivityManager ss = (ConnectivityManager) getActivity().getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo info = ss.getActiveNetworkInfo();
//当有网并且可用
return info!=null&&info.isAvailable();
}
}
布局
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".fragment.AFragment">
<com.example.mylibrary.me.maxwin.view.XListView
android:id="@+id/listview"
android:layout_width="match_parent"
android:layout_height="match_parent"></com.example.mylibrary.me.maxwin.view.XListView>
</FrameLayout>
网络请求工具类
package com.example.yuekaoone.dao;
import com.google.gson.Gson;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
public class GetHttp {
public static <T> T get(String urlstring , Class c){
String ss = GetHttp.gethttp(urlstring);
T t =(T) new Gson().fromJson(ss,c);
return t;
}
public static String gethttp(String urlstring){
try {
URL url = new URL(urlstring);
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.setRequestMethod("GET");
urlConnection.setReadTimeout(5000);
urlConnection.setConnectTimeout(5000);
int responseCode = urlConnection.getResponseCode();
if (responseCode == 200){
String ss = streamString(urlConnection.getInputStream());
return ss;
}
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
private static String streamString(InputStream is) {
StringBuilder sb = new StringBuilder();
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
try {
for (String temp = reader.readLine() ; temp !=null ; temp = reader.readLine()){
sb.append(temp);
}
} catch (IOException e) {
e.printStackTrace();
}finally {
try {
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return sb.toString();
}
}
sqlite数据库创建以及使用
package com.example.yuekaoone.dao;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
public class MHelp extends SQLiteOpenHelper {
public MHelp(Context context) {
super(context, "user.db",null,1);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("create table users(id Integer,name text , img1 text, img2 text, img3 text)");
}
@Override
public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {
}
}
package com.example.yuekaoone.dao;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import com.example.yuekaoone.bean.Shu;
import java.util.ArrayList;
import java.util.List;
public class Dao {
//List<Shu> list = new ArrayList<>();
SQLiteDatabase database;
public Dao(Context context) {
MHelp mHelp = new MHelp(context);
database = mHelp.getReadableDatabase();
}
/* public void addAll(List<Shu> datas) {
for (int i=0;i<datas.size();i++){
add(datas.get(i));
}
}
*/
/* public void add(Shu data) {
database.execSQL("insert into users(name,img1,img2,img3) values(?,?,?,?)",new String[]{data.getName(),data.getImg1(),data.getImg2(),data.getImg3()});
}*/
public void add(String name, String img1, String img2, String img3) {
database.execSQL("insert into users(name,img1,img2,img3) values(?,?,?,?)",new String[]{name,img1,img2,img3});
}
public int getDataCount() {
int count = -1;
Cursor cursor = database.query("users", new String[]{}, null, null, null, null, null);
if(cursor.moveToNext()) {
count = cursor.getCount();
}
return count;
}
public List<Shu> cha() {
//
List<Shu> list = new ArrayList<>();
Cursor cursor = database.rawQuery("select * from users", null);
while(cursor.moveToNext()){
String name = cursor.getString(cursor.getColumnIndex("name"));
String img1 = cursor.getString(cursor.getColumnIndex("img1"));
String img2 = cursor.getString(cursor.getColumnIndex("img2"));
String img3 = cursor.getString(cursor.getColumnIndex("img3"));
Shu shu =new Shu(name,img1,img2,img3);
list.add(shu);
}
cursor.close();
return list;
}
public void delete() {
database.execSQL("delete from users");
}
}
imageloader
package com.example.yuekaoone.dao;
import android.app.Application;
import com.nostra13.universalimageloader.core.ImageLoader;
import java.io.IOException;
public class App extends Application {
@Override
public void onCreate() {
super.onCreate();
try {
ImageLoader.getInstance().init(new ImageLoaderConfigurationss().getcon(this));
} catch (IOException e) {
e.printStackTrace();
}
}
}
package com.example.yuekaoone.dao;
import android.graphics.Bitmap;
import android.os.Environment;
import com.example.yuekaoone.R;
import com.nostra13.universalimageloader.cache.disc.DiskCache;
import com.nostra13.universalimageloader.cache.disc.impl.ext.LruDiskCache;
import com.nostra13.universalimageloader.cache.disc.naming.FileNameGenerator;
import com.nostra13.universalimageloader.cache.disc.naming.HashCodeFileNameGenerator;
import com.nostra13.universalimageloader.core.DisplayImageOptions;
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
import com.nostra13.universalimageloader.core.assist.ImageScaleType;
import java.io.File;
import java.io.IOException;
public class ImageLoaderConfigurationss {
public ImageLoaderConfiguration getcon(App app) throws IOException {
return new ImageLoaderConfiguration.Builder(app)
.memoryCacheSize(10)
.diskCache(new LruDiskCache(new File(Environment.getExternalStorageDirectory(), "imgs"), new HashCodeFileNameGenerator(), 50*1024*1024))
//.diskCacheSize(50*1024*1024)
.defaultDisplayImageOptions(DisplayImageOptions.createSimple())
.build();
//DiskCache
//FileNameGenerator
}
public DisplayImageOptions getpo() {
return new DisplayImageOptions.Builder()
.cacheInMemory(true)
.cacheOnDisk(true)
.showImageForEmptyUri(R.mipmap.ic_launcher)
.showImageOnFail(R.drawable.ic_launcher_background)
.bitmapConfig(Bitmap.Config.RGB_565)
.imageScaleType(ImageScaleType.EXACTLY_STRETCHED)
.build();
}
}