数据库加pullToRefreshListView




//主mainActivity
public class MainActivity extends AppCompatActivity {

    private PullToRefreshListView pullToRefreshListView;
List<JavaBean.NewslistBean> list=new ArrayList();
    private Myadapter myadapter;
    int pager=0;
    public String urlString = "http://api.tianapi.com/huabian/?key=71e58b5b2f930eaf1f937407acde08fe&num=";
    //朱先生
    Handler handler=new Handler(){
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            if (msg.what ==1) {
                Gson gson = new Gson();
                //得到json后添加到数据库中   以便没网时进行查看
                zsgc.insrert((String) msg.obj,urlString+pager);
                JavaBean javaBean = gson.fromJson((String) msg.obj, JavaBean.class);
                List<JavaBean.NewslistBean> newslist = javaBean.getNewslist();
                list.addAll(newslist);
                myadapter.notifyDataSetChanged();
                pullToRefreshListView.onRefreshComplete();

            }
        }
    };
    private com.example.zdm.yuekao0407.zsgc zsgc;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        pullToRefreshListView = (PullToRefreshListView) findViewById(R.id.pull);
        pullToRefreshListView.setMode(PullToRefreshBase.Mode.BOTH);
        zsgc = new zsgc(MainActivity.this);
        myadapter = new Myadapter();
        pullToRefreshListView.setAdapter(myadapter);
        getData(0);
//监听事件
        pullToRefreshListView.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() {
            @Override
            public void onPullDownToRefresh(PullToRefreshBase<ListView> pullToRefreshBase) {
                list.clear();
                getData(0);
            }

            @Override
            public void onPullUpToRefresh(PullToRefreshBase<ListView> pullToRefreshBase) {
pager++;
getData(pager);
            }
        });
    }
//获取数据
    private void getData(final int pager) {
        //判断有网的状态
        //如果有网用流量进行加载
        if (NetStateUtil.isConn(this)){
            new Thread(){
                @Override
                public void run() {
                    super.run();
                    String netjson = NetWordUtils.getNetjson(urlString+pager);
                    Message message = handler.obtainMessage();message.what=1;
                    message.obj=netjson;

                    handler.sendMessage(message);
                }
            }.start();
        }  //如果没网便熊数据库中查询
        else{
            String qurell = zsgc.qurell(urlString + pager);
            if (!qurell.isEmpty()){
                Gson gson = new Gson();
                JavaBean javaBean = gson.fromJson(qurell, JavaBean.class);
                List<JavaBean.NewslistBean> newslist = javaBean.getNewslist();
                list.addAll(newslist);
                myadapter.notifyDataSetChanged();
                pullToRefreshListView.onRefreshComplete();
            }

        }

    }

    //适配器
    private class Myadapter extends BaseAdapter{
        @Override
        public int getCount() {
            return list.size();
        }

        @Override
        public Object getItem(int i) {
            return list.get(i);
        }

        @Override
        public long getItemId(int i) {
            return i;
        }

        @Override
        public View getView(int i, View view, ViewGroup viewGroup) {
            //进行优化
            ViewHoder hoder;
            if (view==null){
                view=View.inflate(MainActivity.this,R.layout.list,null);
                hoder=new ViewHoder();
                hoder.tit=view.findViewById(R.id.tit);
                hoder.img=view.findViewById(R.id.img);
                view.setTag(hoder);
            }else{
              hoder= (ViewHoder) view.getTag();
            }
            hoder.tit.setText(list.get(i).getTitle());
            ImageLoader.getInstance().displayImage(list.get(i).getPicUrl(),hoder.img);
            return view;
        }
        class  ViewHoder{
            ImageView img;
            TextView tit;
        }
    }
}
 
//ImageLoaderConfiguration 类
public class Mapp extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        ImageLoaderConfiguration build = new ImageLoaderConfiguration.Builder(this)
                .memoryCacheSize(100)
                .memoryCacheExtraOptions(480, 800)

                .build();

        ImageLoader.getInstance().init(build);
    }
//创建数据库继承
 SQLiteOpenHelper
public class Sqlite extends SQLiteOpenHelper{

    public Sqlite(Context context) {
        super(context, "test.db", null, 1);
    }

    @Override
    public void onCreate(SQLiteDatabase sqLiteDatabase) {
        sqLiteDatabase.execSQL("create table info(id integer,url text not null,json text not null)");
    }

    @Override
    public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {

    }
对数据库增删改查的封装类

public class zsgc {

    private final Sqlite sqlite;

    public zsgc(Context context) {
        sqlite = new Sqlite(context);
    }
//添加方法
    public void insrert(String json,String uri){
        SQLiteDatabase writableDatabase = sqlite.getWritableDatabase();
      先删除  是为了让添加进去的数据是最新的
        writableDatabase.delete("info","url=?",new String[]{uri});
        ContentValues contentValues = new ContentValues();contentValues.put("url",uri);
        contentValues.put("json",json);
        long info = writableDatabase.insert("info", null, contentValues);
        Log.i("--++",info+"");

    }
//查询方法
public String qurell(String uri){ SQLiteDatabase writableDatabase = sqlite.getWritableDatabase(); Cursor info = writableDatabase.query( "info", null, "url=?", new String[]{uri}, null, null, null, null); while (info.moveToNext()){
因为url是变动的 所以通过当前的url得到当前数据  然后从当前数据获取子节点就可以获取到json
            String json = info.getString(info.getColumnIndex("json"));
            Log.i("--++",json);
返回的json是为了在主activity中通过json便可以进行解析 获取集合
            return json;

        }
        return "";
    }
//判断网络封装类
public class NetStateUtil {

    /*
 * 判断网络连接是否已开
 * true 已打开  false 未打开
 * */
    public static boolean isConn(Context context){
        boolean bisConnFlag=false;
        ConnectivityManager conManager = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo network = conManager.getActiveNetworkInfo();
        if(network!=null){
            bisConnFlag=conManager.getActiveNetworkInfo().isAvailable();
        }
        return bisConnFlag;
    }
//网络转译的json类
 
public class NetWordUtils {

    private static String  tag = "NetWordUtils";
    /**
     * 获取网络json
     *
     * @param urlString
     * @return
     */
    public static String getNetjson(String urlString) {


        try {
            URL url = new URL(urlString);
            HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
            urlConnection.setRequestMethod("GET");//若果是get请求可以不用配置; 其他请求必须配置
            urlConnection.setConnectTimeout(8000);//设置链接超时间

            InputStream inputStream = urlConnection.getInputStream();//获取网络返回的输入流;

            //可拼接的字符串
            StringBuilder stringBuilder = new StringBuilder();
            BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
            String temp = "";
            while ((temp = bufferedReader.readLine()) != null) {
                stringBuilder.append(temp);
                temp = "";
            }
            //这个是网络获取的数据
            String data = stringBuilder.toString();
            Log.e(tag, "getData: " + data);
            return data;
        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return "";
    }

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值