網路請求 + xlistview + 新增到資料庫+
阿新 • • 發佈:2018-12-17
上程式碼
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();
}
}