网络请求 + xlistview + 添加到数据库+imageloader

上代码

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();

    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值