ShowDataActivity

ShowDataActivity

public class ShowDataActivity 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();
            }
        });
    }
}
RefreshView

public interface RefreshView {
    void showData(List<RefreshBean.DataBean> data);

    void showToast(String str,int length);
}
 
RefreshBean

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;
            }
        }
    }
}
MyXrvAdapter

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

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <com.jcodecraeer.xrecyclerview.XRecyclerView
        android:id="@+id/xrv"
        android:layout_width="match_parent"
        android:layout_height="match_parent"></com.jcodecraeer.xrecyclerview.XRecyclerView>
</LinearLayout>
item_one

<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

<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>

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值