侧拉+数据库+PullToRefresh上下拉刷新

//数据库
public class Mysql extends SQLiteOpenHelper {
    public Mysql( Context context) {
        super(context, "bw.db", null, 1);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {


        db.execSQL("CREATE TABLE jsonlist(id INTEGER PRIMARY KEY AUTOINCREMENT,title TEXT,url TEXT,thumbnail_pic_s TEXT)");
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

    }
}
//dao包
public class Dao {

    private final SQLiteDatabase db;

    public Dao(Context context) {
        Mysql mysql = new Mysql(context);
        db = mysql.getWritableDatabase();

    }

    //1.插入数据:

    public long insert(String table, String nullColumnHack, ContentValues values) {
        return db.insert(table, nullColumnHack, values);
    }

    //4.查询数据:
    public Cursor query(String table, String[] columns, String selection,
                        String[] selectionArgs, String groupBy, String having,
                        String orderBy) {

        return db.query(table, columns, selection,
                selectionArgs, groupBy, having,
                orderBy);
    }
    //数据库添加
 for (JsonBean.DataBean bean : data) {
                        ContentValues values = new ContentValues();
                        values.put("news_id",bean.getNews_id());
                        values.put("news_title",bean.getNews_title());
                        values.put("pic_url",bean.getPic_url());
                        dao.insert("xinwen", null, values);
                    }

}
//数据库查询
Toast.makeText(ShowActivity.this, "无网络连接", Toast.LENGTH_LONG).show();
            query = dao.query("xinwen", null, null, null, null, null, null);
            data=new ArrayList<>();
            if (query.moveToFirst()){
                do {
                     /*
                        private String news_id;
                        private String news_title;
                        private String news_summary;
                        private String pic_url;
                         */
                    String news_id = query.getString(query.getColumnIndex("news_id"));
                    String news_title = query.getString(query.getColumnIndex("news_title"));
                    String pic_url = query.getString(query.getColumnIndex("pic_url"));
                    data.add(new JsonBean.DataBean(news_id,news_title,pic_url));
                }while (query.moveToNext());
            }
            query.close();
            adapter_xlv = new MyBaseAdapter_xlv(data, ShowActivity.this);
            xlv.setAdapter(adapter_xlv);
//image-loader
public class MyApplication extends Application {

    @Override
    public void onCreate() {
        super.onCreate();
        String path = Environment.getExternalStorageDirectory().getPath() + "/RiKao13";
        File file = new File(path);

        ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(this)
                .memoryCacheExtraOptions(200, 200)//配置内存缓存图片的尺寸
                .memoryCacheSize(2 * 1024 * 1024)//配置内存缓存的大小
                .threadPoolSize(3)//配置加载图片的线程数
                .threadPriority(1000)//配置线程的优先级
                .diskCache(new UnlimitedDiskCache(file))//UnlimitedDiskCache 限制这个图片的缓存路径
                .diskCacheFileCount(50)//配置sdcard缓存文件的数量
                .diskCacheFileNameGenerator(new Md5FileNameGenerator())//MD5这种方式生成缓存文件的名字
                .diskCacheSize(50 * 1024 * 1024)//在sdcard缓存50MB
                .build();//完成

        ImageLoader.getInstance().init(config);
    }
}
//多条目
public class ListJsonAdapter extends BaseAdapter {
    private Context context;

    private List<JsonBeanListview.DataBean> data;

    public ListJsonAdapter(Context context, List<JsonBeanListview.DataBean> data) {
        this.context = context;
        this.data = data;
    }

    @Override
    public int getCount() {
        return data.size();
    }

    @Override
    public Object getItem(int position) {
        return null;
    }

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

    @Override
    public int getItemViewType(int position) {
        return position % 3;
    }

    @Override
    public int getViewTypeCount() {
        return 3;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {

        switch (getItemViewType(position)) {
            case 0:
                ViewHolder1 holder1;

                if (convertView == null) {
                    convertView = View.inflate(context, R.layout.item_list1, null);
                    holder1 = new ViewHolder1();
                    holder1.imageView = convertView.findViewById(R.id.imageView);
                    holder1.textView = convertView.findViewById(R.id.textView);
                    convertView.setTag(holder1);
                } else {
                    holder1 = (ViewHolder1) convertView.getTag();
                }
                JsonBeanListview.DataBean bean = data.get(position);
                //================

                DisplayImageOptions options = new DisplayImageOptions.Builder()
                        .cacheInMemory(true)//让图片进行内存缓存
                        .cacheOnDisk(true)//让图片进行sdcard缓存
                        /*.showImageForEmptyUri(R.mipmap.ic_empty)//图片地址有误
                        .showImageOnFail(R.mipmap.ic_error)//当图片加载出现错误的时候显示的图片
                        .showImageOnLoading(R.mipmap.loading)//图片正在加载的时候显示的图片*/
                        .build();
                //参数1:加载的图片地址
                //参数2:将图片设置到那个图片控件上面
                //参数3:加载图片配置选项,意思是指明对这张图片的是否进行缓存(内存、sdcard)
                ImageLoader.getInstance().displayImage(bean.getThumbnail_pic_s(), holder1.imageView, options);
                //================
                holder1.textView.setText(bean.getTitle());
                break;
            case 1:
                ViewHolder2 holder2;

                if (convertView == null) {
                    convertView = View.inflate(context, R.layout.item_list2, null);
                    holder2 = new ViewHolder2();

                    holder2.textView = convertView.findViewById(R.id.textView);
                    convertView.setTag(holder2);
                } else {
                    holder2 = (ViewHolder2) convertView.getTag();
                }
                JsonBeanListview.DataBean bean2 = data.get(position);
                holder2.textView.setText(bean2.getTitle());
                break;
            case 2:
                ViewHolder3 holder3;

                if (convertView == null) {
                    convertView = View.inflate(context, R.layout.item_list3, null);
                    holder3 = new ViewHolder3();
                    holder3.imageView = convertView.findViewById(R.id.imageView);
                    convertView.setTag(holder3);
                } else {
                    holder3 = (ViewHolder3) convertView.getTag();
                }
                JsonBeanListview.DataBean bean3 = data.get(position);
                ImageLoader.getInstance().displayImage(bean3.getThumbnail_pic_s(), holder3.imageView);

                break;
        }


        return convertView;
    }

    class ViewHolder1 {
        ImageView imageView;
        TextView textView;
    }

    class ViewHolder2 {
        TextView textView;
    }

    class ViewHolder3 {
        ImageView imageView;

    }
}
//PulltoreFresh
public class MainActivity extends AppCompatActivity {

    private List<JavaBean.DataBean> list;
    private MyAdapter adapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        // 第一步:得到控件
        final PullToRefreshListView mPullRefreshListView = (PullToRefreshListView) findViewById(R.id.pull_refresh_list);
        /**第二步:设置刷新方式
         * 设置刷新的模式:常用的有三种
         * PullToRefreshBase.Mode.BOTH  //上下拉刷新都可以
         * PullToRefreshBase.Mode.PULL_FROM_START  //只允许下拉刷新
         * PullToRefreshBase.Mode.PULL_FROM_END   //只允许上拉刷新
         *
         */
        mPullRefreshListView.setMode(PullToRefreshBase.Mode.BOTH);
        // 第三步:设置是否允许刷新的时候可以滑动()
        mPullRefreshListView.setScrollingWhileRefreshingEnabled(true);
        //第四步:数据
        final String str = "http://www.xieast.com/api/news/news.php?page=1";
        HttpUtils.httpAsynTask(str, new HttpUtils.CallBackString() {
            @Override
            public void getData(String s) {
                //解析
                Gson gson = new Gson();
                JavaBean bean = gson.fromJson(s, JavaBean.class);
                list = bean.getData();
                //第五步:设置适配器
                adapter = new MyAdapter(MainActivity.this, list);
                mPullRefreshListView.setAdapter(adapter);

            }
        });

        //第六步:监听事件
        mPullRefreshListView.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() {
            @Override
            public void onPullDownToRefresh(PullToRefreshBase<ListView> refreshView) {
                //下拉刷新
                HttpUtils.httpAsynTask(str, new HttpUtils.CallBackString() {
                    @Override
                    public void getData(String s) {
                        //解析
                        Gson gson = new Gson();
                        JavaBean bean = gson.fromJson(s, JavaBean.class);
                        list = bean.getData();
                        //设置适配器
                        adapter = new MyAdapter(MainActivity.this, list);
                        mPullRefreshListView.setAdapter(adapter);
                        mPullRefreshListView.onRefreshComplete();
                    }
                });
            }

            @Override
            public void onPullUpToRefresh(PullToRefreshBase<ListView> refreshView) {
                //上拉加载
                HttpUtils.httpAsynTask(str, new HttpUtils.CallBackString() {
                    @Override
                    public void getData(String s) {
                        //解析
                        Gson gson = new Gson();
                        JavaBean bean = gson.fromJson(s, JavaBean.class);
                        List<JavaBean.DataBean> beans = bean.getData();
                        ///把查询到的新数据添加到集合中
                        list.addAll(beans);
                        //刷新适配器
                        adapter.notifyDataSetChanged();
                        //  当列表被刷新时,调用onRefreshComplete
                        mPullRefreshListView.onRefreshComplete();
                    }
                });


            }
        });


    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值