撒地方

例:












public class MainActivity extends AppCompatActivity implements RefreshView {
    private RefreshpresenterImp refreshpresenterImp;
    private XRecyclerView mXrv;
    private String page;
    private MyXrvAdapter myXrvAdapter;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_data);
        initView();
        Intent intent = getIntent();
        page = intent.getStringExtra("page");
        int num = Integer.parseInt(page);
        Log.e("JBK", page);
        if(num < 10){
            page = "0"+ page;
        }
        refreshpresenterImp = new RefreshpresenterImp(this,ShowDataActivity.this);
        refreshpresenterImp.showData(page);
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        refreshpresenterImp.closeView();
    }

    @Override
    public void showData(List<RefreshBean.DataBean> data) {
        //适配器
        myXrvAdapter = new MyXrvAdapter(ShowDataActivity.this, data);
        mXrv.setAdapter(myXrvAdapter);
        myXrvAdapter.setOnItemClickListener(new MyXrvAdapter.OnItemClickListener() {
            @Override
            public void onItemLongListener(int position) {
                //弹出对话框
                showAlertDialog(position);

            }
        });
    }

    private void showAlertDialog(final int position) {
        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setTitle("提示:");
        builder.setMessage("你确定要删除吗?");
        builder.setCancelable(false);
        builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                myXrvAdapter.deleteItem(position);
                dialog.dismiss();
            }
        });
        builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                dialog.dismiss();
            }
        });
        AlertDialog dialog = builder.create();
        dialog.show();
    }

    @Override
    public void showToast(String str, int length) {
        Toast.makeText(this, str, length).show();
    }

    private void initView() {
        mXrv = (XRecyclerView) findViewById(R.id.xrv);
        //布局管理器
        LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);
        mXrv.setLayoutManager(linearLayoutManager);
        mXrv.setLoadingListener(new XRecyclerView.LoadingListener() {
            @Override
            public void onRefresh() {
                refreshpresenterImp.showData(page);
                mXrv.refreshComplete();
            }

            @Override
            public void onLoadMore() {
                int num = Integer.parseInt(page);
                num++;
                refreshpresenterImp.showData("0"+num);
                mXrv.loadMoreComplete();
            }
        });
    }
}




public interface RefreshView {
    void showData(List<RefreshBean.DataBean> data);
    void showToast(String str,int length);
}


public class RefreshBean {
    private String stat;
    private List<DataBean> data;
    public static RefreshBean objectFromData(String str) {
        return new Gson().fromJson(str, RefreshBean.class);
    }
    public static RefreshBean objectFromData(String str, String key) {
        try {
            JSONObject jsonObject = new JSONObject(str);
            return new Gson().fromJson(jsonObject.getString(str), RefreshBean.class);
        } catch (JSONException e) {
            e.printStackTrace();
        }
        return null;
    }
    public String getStat() {
        return stat;
    }
    public void setStat(String stat) {
        this.stat = stat;
    }
    public List<DataBean> getData() {
        return data;
    }
    public void setData(List<DataBean> data) {
        this.data = data;
    }
    public static class DataBean {
        /**
         * brief : ​德国媒体《Sportbuzzer》的最新消息,莱万经纪人扎哈维透露其今夏铁心离队,并将自己的想法通报给了拜仁
         * customtag : []
         * daoPaiKey :
         * date : 2018-05-30 10:26
         * hotnews : 0
         * isnxw : 0
         * isrecom : 0
         * isvideo : 0
         * kw : []
         * lbimg : [{"alt":"","describe":"","idx":1,"imgheight":275,"imgname":"20180530102655_7e33f019f7f30ac59bd907e9d8e87984_2_mwpl_05500201.jpg","imgwidth":550,"src":"http://00.imgmini.eastday.com/mobile/20180530/20180530102655_7e33f019f7f30ac59bd907e9d8e87984_2_mwpl_05500201.jpg"}]
         * miniimg : [{"alt":"","describe":"","idx":1,"imgheight":240,"imgname":"20180530102655_7e33f019f7f30ac59bd907e9d8e87984_2_mwpm_03200403.jpg","imgwidth":320,"src":"http://00.imgmini.eastday.com/mobile/20180530/20180530102655_7e33f019f7f30ac59bd907e9d8e87984_2_mwpm_03200403.jpg"},{"alt":"","describe":"","idx":2,"imgheight":240,"imgname":"20180530102655_7e33f019f7f30ac59bd907e9d8e87984_1_mwpm_03200403.jpg","imgwidth":320,"src":"http://00.imgmini.eastday.com/mobile/20180530/20180530102655_7e33f019f7f30ac59bd907e9d8e87984_1_mwpm_03200403.jpg"}]
         * miniimg02 : [{"alt":"","describe":"","idx":1,"imgheight":180,"imgname":"20180530102655_7e33f019f7f30ac59bd907e9d8e87984_2_mwpm_03201609.jpg","imgwidth":320,"src":"http://00.imgmini.eastday.com/mobile/20180530/20180530102655_7e33f019f7f30ac59bd907e9d8e87984_2_mwpm_03201609.jpg"},{"alt":"","describe":"","idx":2,"imgheight":180,"imgname":"20180530102655_7e33f019f7f30ac59bd907e9d8e87984_1_mwpm_03201609.jpg","imgwidth":320,"src":"http://00.imgmini.eastday.com/mobile/20180530/20180530102655_7e33f019f7f30ac59bd907e9d8e87984_1_mwpm_03201609.jpg"}]
         * miniimg_size : 2
         * pkey : []
         * recommendtype : -1
         * rowkey : 9223370509207560354
         * source : 红色英超
         * tag : []
         * topic : 拜仁锋霸铁心离队,让经纪人施压;曼联今夏第一签倒计时
         * type : tiyu
         * url : 180530102655453.html
         * urlpv : 0
         */
        private String brief;
        private String daoPaiKey;
        private String date;
        private String hotnews;
        private String isnxw;
        private String isrecom;
        private String isvideo;
        private String miniimg_size;
        private String recommendtype;
        private String rowkey;
        private String source;
        private String topic;
        private String type;
        private String url;
        private String urlpv;
        private List<?> customtag;
        private List<?> kw;
        private List<LbimgBean> lbimg;
        private List<MiniimgBean> miniimg;
        private List<Miniimg02Bean> miniimg02;
        private List<?> pkey;
        private List<?> tag;
        public static DataBean objectFromData(String str) {
            return new Gson().fromJson(str, DataBean.class);
        }
        public static DataBean objectFromData(String str, String key) {
            try {
                JSONObject jsonObject = new JSONObject(str);
                return new Gson().fromJson(jsonObject.getString(str), DataBean.class);
            } catch (JSONException e) {
                e.printStackTrace();
            }
            return null;
        }
        public String getBrief() {
            return brief;
        }
        public void setBrief(String brief) {
            this.brief = brief;
        }
        public String getDaoPaiKey() {
            return daoPaiKey;
        }
        public void setDaoPaiKey(String daoPaiKey) {
            this.daoPaiKey = daoPaiKey;
        }
        public String getDate() {
            return date;
        }
        public void setDate(String date) {
            this.date = date;
        }
        public String getHotnews() {
            return hotnews;
        }
        public void setHotnews(String hotnews) {
            this.hotnews = hotnews;
        }
        public String getIsnxw() {
            return isnxw;
        }
        public void setIsnxw(String isnxw) {
            this.isnxw = isnxw;
        }
        public String getIsrecom() {
            return isrecom;
        }
        public void setIsrecom(String isrecom) {
            this.isrecom = isrecom;
        }
        public String getIsvideo() {
            return isvideo;
        }
        public void setIsvideo(String isvideo) {
            this.isvideo = isvideo;
        }
        public String getMiniimg_size() {
            return miniimg_size;
        }
        public void setMiniimg_size(String miniimg_size) {
            this.miniimg_size = miniimg_size;
        }
        public String getRecommendtype() {
            return recommendtype;
        }
        public void setRecommendtype(String recommendtype) {
            this.recommendtype = recommendtype;
        }
        public String getRowkey() {
            return rowkey;
        }
        public void setRowkey(String rowkey) {
            this.rowkey = rowkey;
        }
        public String getSource() {
            return source;
        }
        public void setSource(String source) {
            this.source = source;
        }
        public String getTopic() {
            return topic;
        }
        public void setTopic(String topic) {
            this.topic = topic;
        }
        public String getType() {
            return type;
        }
        public void setType(String type) {
            this.type = type;
        }
        public String getUrl() {
            return url;
        }
        public void setUrl(String url) {
            this.url = url;
        }
        public String getUrlpv() {
            return urlpv;
        }
        public void setUrlpv(String urlpv) {
            this.urlpv = urlpv;
        }
        public List<?> getCustomtag() {
            return customtag;
        }
        public void setCustomtag(List<?> customtag) {
            this.customtag = customtag;
        }
        public List<?> getKw() {
            return kw;
        }
        public void setKw(List<?> kw) {
            this.kw = kw;
        }
        public List<LbimgBean> getLbimg() {
            return lbimg;
        }
        public void setLbimg(List<LbimgBean> lbimg) {
            this.lbimg = lbimg;
        }
        public List<MiniimgBean> getMiniimg() {
            return miniimg;
        }
        public void setMiniimg(List<MiniimgBean> miniimg) {
            this.miniimg = miniimg;
        }
        public List<Miniimg02Bean> getMiniimg02() {
            return miniimg02;
        }
        public void setMiniimg02(List<Miniimg02Bean> miniimg02) {
            this.miniimg02 = miniimg02;
        }
        public List<?> getPkey() {
            return pkey;
        }
        public void setPkey(List<?> pkey) {
            this.pkey = pkey;
        }
        public List<?> getTag() {
            return tag;
        }
        public void setTag(List<?> tag) {
            this.tag = tag;
        }
        public static class LbimgBean {
            /**
             * alt :
             * describe :
             * idx : 1
             * imgheight : 275
             * imgname : 20180530102655_7e33f019f7f30ac59bd907e9d8e87984_2_mwpl_05500201.jpg
             * imgwidth : 550
             * src : http://00.imgmini.eastday.com/mobile/20180530/20180530102655_7e33f019f7f30ac59bd907e9d8e87984_2_mwpl_05500201.jpg
             */
            private String alt;
            private String describe;
            private int idx;
            private int imgheight;
            private String imgname;
            private int imgwidth;
            private String src;
            public static LbimgBean objectFromData(String str) {
                return new Gson().fromJson(str, LbimgBean.class);
            }
            public static LbimgBean objectFromData(String str, String key) {
                try {
                    JSONObject jsonObject = new JSONObject(str);
                    return new Gson().fromJson(jsonObject.getString(str), LbimgBean.class);
                } catch (JSONException e) {
                    e.printStackTrace();
                }
                return null;
            }
            public String getAlt() {
                return alt;
            }
            public void setAlt(String alt) {
                this.alt = alt;
            }
            public String getDescribe() {
                return describe;
            }
            public void setDescribe(String describe) {
                this.describe = describe;
            }
            public int getIdx() {
                return idx;
            }
            public void setIdx(int idx) {
                this.idx = idx;
            }
            public int getImgheight() {
                return imgheight;
            }
            public void setImgheight(int imgheight) {
                this.imgheight = imgheight;
            }
            public String getImgname() {
                return imgname;
            }
            public void setImgname(String imgname) {
                this.imgname = imgname;
            }
            public int getImgwidth() {
                return imgwidth;
            }
            public void setImgwidth(int imgwidth) {
                this.imgwidth = imgwidth;
            }
            public String getSrc() {
                return src;
            }
            public void setSrc(String src) {
                this.src = src;
            }
        }
        public static class MiniimgBean {
            /**
             * alt :
             * describe :
             * idx : 1
             * imgheight : 240
             * imgname : 20180530102655_7e33f019f7f30ac59bd907e9d8e87984_2_mwpm_03200403.jpg
             * imgwidth : 320
             * src : http://00.imgmini.eastday.com/mobile/20180530/20180530102655_7e33f019f7f30ac59bd907e9d8e87984_2_mwpm_03200403.jpg
             */
            private String alt;
            private String describe;
            private int idx;
            private int imgheight;
            private String imgname;
            private int imgwidth;
            private String src;
            public static MiniimgBean objectFromData(String str) {
                return new Gson().fromJson(str, MiniimgBean.class);
            }
            public static MiniimgBean objectFromData(String str, String key) {
                try {
                    JSONObject jsonObject = new JSONObject(str);
                    return new Gson().fromJson(jsonObject.getString(str), MiniimgBean.class);
                } catch (JSONException e) {
                    e.printStackTrace();
                }
                return null;
            }
            public String getAlt() {
                return alt;
            }
            public void setAlt(String alt) {
                this.alt = alt;
            }
            public String getDescribe() {
                return describe;
            }
            public void setDescribe(String describe) {
                this.describe = describe;
            }
            public int getIdx() {
                return idx;
            }
            public void setIdx(int idx) {
                this.idx = idx;
            }
            public int getImgheight() {
                return imgheight;
            }
            public void setImgheight(int imgheight) {
                this.imgheight = imgheight;
            }
            public String getImgname() {
                return imgname;
            }
            public void setImgname(String imgname) {
                this.imgname = imgname;
            }
            public int getImgwidth() {
                return imgwidth;
            }
            public void setImgwidth(int imgwidth) {
                this.imgwidth = imgwidth;
            }
            public String getSrc() {
                return src;
            }
            public void setSrc(String src) {
                this.src = src;
            }
        }
        public static class Miniimg02Bean {
            /**
             * alt :
             * describe :
             * idx : 1
             * imgheight : 180
             * imgname : 20180530102655_7e33f019f7f30ac59bd907e9d8e87984_2_mwpm_03201609.jpg
             * imgwidth : 320
             * src : http://00.imgmini.eastday.com/mobile/20180530/20180530102655_7e33f019f7f30ac59bd907e9d8e87984_2_mwpm_03201609.jpg
             */
            private String alt;
            private String describe;
            private int idx;
            private int imgheight;
            private String imgname;
            private int imgwidth;
            private String src;
            public static Miniimg02Bean objectFromData(String str) {
                return new Gson().fromJson(str, Miniimg02Bean.class);
            }
            public static Miniimg02Bean objectFromData(String str, String key) {
                try {
                    JSONObject jsonObject = new JSONObject(str);
                    return new Gson().fromJson(jsonObject.getString(str), Miniimg02Bean.class);
                } catch (JSONException e) {
                    e.printStackTrace();
                }
                return null;
            }
            public String getAlt() {
                return alt;
            }
            public void setAlt(String alt) {
                this.alt = alt;
            }
            public String getDescribe() {
                return describe;
            }
            public void setDescribe(String describe) {
                this.describe = describe;
            }
            public int getIdx() {
                return idx;
            }
            public void setIdx(int idx) {
                this.idx = idx;
            }
            public int getImgheight() {
                return imgheight;
            }
            public void setImgheight(int imgheight) {
                this.imgheight = imgheight;
            }
            public String getImgname() {
                return imgname;
            }
            public void setImgname(String imgname) {
                this.imgname = imgname;
            }
            public int getImgwidth() {
                return imgwidth;
            }
            public void setImgwidth(int imgwidth) {
                this.imgwidth = imgwidth;
            }
            public String getSrc() {
                return src;
            }
            public void setSrc(String src) {
                this.src = src;
            }
        }
    }
}



public class RefreshpresenterImp implements Refreshpresenter{
    private RefreshView refreshView;
    private final RefreshModelImp refreshModelImp;
    private Context context;
    private MyDao dao;
    public RefreshpresenterImp(RefreshView refreshView, Context context) {
        this.refreshView = refreshView;
        this.context = context;
        refreshModelImp = new RefreshModelImp();
        dao = new MyDao(context);
    }

    @Override
    public void showData(final String page) {
        boolean connect = NetStateUtils.isConnect(context);
        Log.e("JBK",connect+"");
        if(connect){
            refreshModelImp.showData(page, new OnNetListener() {
                @Override
                public void OnSuccess(String result) {

                    String replace = result.replace("null(", "").replace(")", "");
                    dao.insert(Api.REFRESH_URL + "?type=501" + page,replace);
                    RefreshBean refreshBean = new Gson().fromJson(replace, RefreshBean.class);
                    List<RefreshBean.DataBean> data = refreshBean.getData();
                    refreshView.showData(data);
                }

                @Override
                public void OnSuccess(byte[] bytes) {

                }

                @Override
                public void onFailed(Exception e) {

                }
            });
        }else{
            refreshView.showToast("没有网络", Toast.LENGTH_SHORT);
            String select = dao.select(Api.REFRESH_URL + "?type=501" + page);
            RefreshBean refreshBean = new Gson().fromJson(select, RefreshBean.class);
            List<RefreshBean.DataBean> data = refreshBean.getData();
            refreshView.showData(data);
        }

    }

    public void closeView(){
        if(refreshView != null){
            refreshView = null;
        }
    }
}



public interface Refreshpresenter {
    void showData(String page);
}

public class RefreshModelImp implements RefreshModel{
    @Override
    public void showData(String page, OnNetListener onNetListener) {
        OkhttpUtils.getInstener().doGet(Api.REFRESH_URL+"?type=50"+page,onNetListener);
    }
}


public interface RefreshModel {
    void showData(String page, OnNetListener onNetListener);
}

public interface OnNetListener {
    void OnSuccess(String result);
    void OnSuccess(byte[] bytes);
    void onFailed(Exception e);
}

public class OkhttpUtils {

    private static OkhttpUtils instener;
    private OkHttpClient okHttpClient;
    private static Handler handler;

    private OkhttpUtils() {
        HttpLoggingInterceptor logging = new HttpLoggingInterceptor();
        logging.setLevel(HttpLoggingInterceptor.Level.BODY);
        okHttpClient = new OkHttpClient.Builder()
                .connectTimeout(15, TimeUnit.SECONDS)
                .readTimeout(15, TimeUnit.SECONDS)
                .writeTimeout(15, TimeUnit.SECONDS)
                //.addInterceptor(new MyInterceptor())
                .addInterceptor(logging)
                .build();
        handler = new Handler();
    }

    public static OkhttpUtils getInstener() {
        if (instener == null) {
            instener = new OkhttpUtils();
        }
        return instener;
    }

    //处理请求网络成功的方法,返回的结果是Json字符串
    private static void onSuccessJsonStringMethod(final String jsonValue ,final OnNetListener callBack){
        handler.post(new Runnable() {
            @Override
            public void run() {
                if (callBack !=null){
                    callBack.OnSuccess(jsonValue);
                }
            }
        });
    }

    //处理请求网络错误的方法
    private static void onFailedJsonStringMethod(final Exception e, final OnNetListener onNetListener){
        handler.post(new Runnable() {
            @Override
            public void run() {
                if(onNetListener != null){
                    onNetListener.onFailed(e);
                }
            }
        });
    }

    /**
     * 封装GET方法
     * @param url 网络路径
     * @param onNetListener 接口对象
     */
    public void doGet(String url, final OnNetListener onNetListener) {
        //创建Request
        Request request = new Request.Builder().url(url).build();
        //发送请求
        okHttpClient.newCall(request).enqueue(new Callback() {
            @Override
            public void onFailure(Call call, final IOException e) {
                onFailedJsonStringMethod(e,onNetListener);
            }

            @Override
            public void onResponse(Call call, Response response) throws IOException {
                final String string= response.body().string();
                handler.post(new Runnable() {
                    @Override
                    public void run() {
                        onNetListener.OnSuccess(string);
                    }
                });
            }
        });
    }

    /**
     * 封装post方法
     * @param url 网络路径
     * @param params 路径添加的参数
     * @param onNetListener 接口
     */
    public void doPost(String url, Map<String, String> params, final OnNetListener onNetListener) {
        //创建formBody
        FormBody.Builder builder = new FormBody.Builder();
        //添加参数
        for (Map.Entry<String, String> entry : params.entrySet()) {
            builder.add(entry.getKey(), entry.getValue());
        }
        FormBody formBody = builder.build();
        //创建Request
        Request request = new Request.Builder()
                .url(url)
                .post(formBody)
                .build();
        //请求网络
        okHttpClient.newCall(request).enqueue(new Callback() {
            @Override
            public void onFailure(Call call, final IOException e) {
                onFailedJsonStringMethod(e,onNetListener);
            }
            @Override
            public void onResponse(Call call, Response response) throws IOException {
                final String string = response.body().string();
                onSuccessJsonStringMethod(string,onNetListener);
            }
        });
    }

    /**
     * 封装上传文件
     * @param url   网络地址
     * @param params    参数集合
     * @param fileNmae  文件名
     * @param file  文件
     * @param onNetListener 接口
     */
    public void uploadFild(String url, Map<String, String> params, String fileNmae, File file, final OnNetListener onNetListener){
        MultipartBody.Builder builder = new MultipartBody.Builder();
        builder.setType(MultipartBody.FORM);
        //上传参数
        for (Map.Entry<String, String> entry : params.entrySet()) {
            builder.addFormDataPart(entry.getKey(), entry.getValue());
        }
        builder.addFormDataPart("file", fileNmae, RequestBody.create(MediaType.parse("application/octet-stream"),file));
        MultipartBody multipartBody = builder.build();
        Request request = new Request.Builder().url(url).post(multipartBody).build();

        //发送请求
        okHttpClient.newCall(request).enqueue(new Callback() {
            @Override
            public void onFailure(Call call, final IOException e) {
                onFailedJsonStringMethod(e,onNetListener);
            }

            @Override
            public void onResponse(Call call, Response response) throws IOException {
                final String string = response.body().string();
                onSuccessJsonStringMethod(string,onNetListener);
            }
        });
    }
}


/**
 * 用于放置所有的网络路径
 */
public interface Api {
    String REFRESH_URL = "http://ttpc.dftoutiao.com/jsonpc/refresh";
}



public class MyDao {
    private MyHelper myHelper;
    public MyDao(Context context) {
        myHelper = new MyHelper(context);
    }
    //添加
    public void insert(String path,String json){
        SQLiteDatabase sqLiteDatabase = myHelper.getWritableDatabase();
        //添加之前把相同的数据删除
        sqLiteDatabase.delete("news","urlpath = ?",new String[]{path});
        //进行数据库的添加
        ContentValues values = new ContentValues();
        values.put("urlpath",path);
        values.put("jsondata",json);
        sqLiteDatabase.insert("news",null,values);
        Log.e("JBK","添加成功");
    }
    //查询
    public String select(String path){
        String data = "";
        SQLiteDatabase sqLiteDatabase = myHelper.getWritableDatabase();
        Cursor cursor = sqLiteDatabase.query("news", null, "urlpath = ?", new String[]{path}, null, null, null);
        while (cursor.moveToNext()){
            data = cursor.getString(cursor.getColumnIndex("jsondata"));
        }
        return data;
    }
}

public class MyHelper extends SQLiteOpenHelper {
    public MyHelper(Context context) {
        super(context, "mydb", null, 1);
    }
    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL("create table news(id integer primary key autoincrement,urlPath text,jsondata text)");
    }
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    }
}


public class NetStateUtils {
    // 判断是否有网络
    public static boolean isConnect(Context context){
        boolean flag = true;
        // 得到管理器对象
        ConnectivityManager manager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
        // 得到网络信息类对象
        NetworkInfo network = manager.getActiveNetworkInfo();
        // 判断有无对象
        if (network != null && network.isConnected()){
            flag = true;
        }else {
            flag = false;
        }
        return flag;
    }
}


public class MyXrvAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>{
    private final int ONE = 0;
    private final int TWO = 1;

    private Context context;
    private List<RefreshBean.DataBean> list;

    public MyXrvAdapter(Context context, List<RefreshBean.DataBean> list) {
        this.context = context;
        this.list = list;
    }

    @NonNull
    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        RecyclerView.ViewHolder viewHolder;
        if(viewType == ONE){
            View inflate = LayoutInflater.from(context).inflate(R.layout.item_one,null,false);
            viewHolder = new OneViewHolder(inflate);
        }else if(viewType == TWO){
            View inflate = LayoutInflater.from(context).inflate(R.layout.item_two,null,false);
            viewHolder = new TwoViewHolder(inflate);
        }else{
            viewHolder = null;
        }
        return viewHolder;
    }

    @Override
    public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, final int position) {
        RefreshBean.DataBean dataBean = list.get(position);
        int viewType = getItemViewType(position);
        if(viewType == ONE){
            OneViewHolder oneViewHolder = (OneViewHolder) holder;
            oneViewHolder.title_one.setText(dataBean.getTopic());

            Glide.with(context).load(dataBean.getLbimg().get(0).getSrc()).into(oneViewHolder.image01);
            Glide.with(context).load(dataBean.getLbimg().get(0).getSrc()).into(oneViewHolder.image02);
            Glide.with(context).load(dataBean.getLbimg().get(0).getSrc()).into(oneViewHolder.image03);
            oneViewHolder.time_one.setText(dataBean.getDate()+" "+dataBean.getSource());

            oneViewHolder.itemView.setOnLongClickListener(new View.OnLongClickListener() {
                @Override
                public boolean onLongClick(View v) {
                    if(mOnItemClickListener != null){
                        mOnItemClickListener.onItemLongListener(position);
                    }
                    return true;
                }
            });
        }else if(viewType == TWO){
            TwoViewHolder twoViewHolder = (TwoViewHolder) holder;
            twoViewHolder.title_two.setText(dataBean.getTopic());
            Glide.with(context).load(dataBean.getLbimg().get(0).getSrc()).into(twoViewHolder.image_two);
            twoViewHolder.time_two.setText(dataBean.getDate()+" "+dataBean.getSource());

            twoViewHolder.itemView.setOnLongClickListener(new View.OnLongClickListener() {
                @Override
                public boolean onLongClick(View v) {
                    if(mOnItemClickListener != null){
                        mOnItemClickListener.onItemLongListener(position);
                    }
                    return true;
                }
            });
        }
    }

    @Override
    public int getItemCount() {
        return list.size();
    }

    @Override
    public int getItemViewType(int position) {
        if(position % 3 == 0){
            return TWO;
        }else{
            return ONE;
        }
    }

    class OneViewHolder extends RecyclerView.ViewHolder{
        private final TextView title_one;
        private final ImageView image01;
        private final ImageView image02;
        private final ImageView image03;
        private final TextView time_one;
        public OneViewHolder(View itemView) {
            super(itemView);
            title_one = itemView.findViewById(R.id.title_one);
            image01 = itemView.findViewById(R.id.image01);
            image02 = itemView.findViewById(R.id.image02);
            image03 = itemView.findViewById(R.id.image03);
            time_one = itemView.findViewById(R.id.time_one);

        }
    }

    class TwoViewHolder extends RecyclerView.ViewHolder{
        private final ImageView image_two;
        private final TextView title_two;
        private final TextView time_two;
        public TwoViewHolder(View itemView) {
            super(itemView);
            image_two = itemView.findViewById(R.id.image_two);
            title_two = itemView.findViewById(R.id.title_two);
            time_two = itemView.findViewById(R.id.time_two);
        }
    }

    //设置接口
    public interface OnItemClickListener{
        void onItemLongListener(int position);
    }

    private OnItemClickListener mOnItemClickListener;

    //设置方法
    public void setOnItemClickListener(OnItemClickListener listener){
        this.mOnItemClickListener = listener;
    }

    //删除
    public void deleteItem(int position){
        list.remove(position);
        notifyItemRemoved(position);
        notifyItemRangeChanged(position, list.size()-position);
    }
}
item_one
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_margin="15dp"
    android:gravity="center"
    android:orientation="vertical"
    android:padding="10dp">
    <TextView
        android:id="@+id/title_one"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="TextView"
        android:textSize="18dp"
        android:textStyle="bold" />
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">
        <ImageView
            android:id="@+id/image01"
            android:layout_width="0dp"
            android:layout_height="100dp"
            android:layout_weight="1" />
        <ImageView
            android:id="@+id/image02"
            android:layout_width="0dp"
            android:layout_height="100dp"
            android:layout_marginLeft="10dp"
            android:layout_marginRight="10dp"
            android:layout_weight="1" />
        <ImageView
            android:id="@+id/image03"
            android:layout_width="0dp"
            android:layout_height="100dp"
            android:layout_weight="1" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">
        <TextView
            android:id="@+id/time_one"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="TextView" />
    </LinearLayout>
</LinearLayout>


item_two
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_margin="15dp"
    android:orientation="horizontal"
    android:padding="10dp">
    <ImageView
        android:id="@+id/image_two"
        android:layout_width="100sp"
        android:layout_height="100sp" />
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">
        <TextView
            android:id="@+id/title_two"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="2"
            android:textSize="20dp"
            android:textStyle="bold" />
        <TextView
            android:id="@+id/time_two"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"
            android:textColor="#888888" />
    </LinearLayout>
</LinearLayout>







猜你喜欢

转载自blog.csdn.net/jun_tong/article/details/80519774