两个RecyclerView分别实现轮播图+京东秒杀

本文介绍了在一个MVP架构的项目中,如何利用RecyclerView结合Fresco和OKhttp+Retrofit来实现首页轮播图和京东秒杀活动的展示。通过Recycleview的多条目布局,完成数据请求并显示在列表上,同时,当秒杀活动结束时,能够跳转到特定的Activity。
摘要由CSDN通过智能技术生成
 

项目框架:MVP

图片加载用Fresco

网络请求用OKhttp+Retrofit实现,完成首页数据请求

首页只用一个Recycleview实现轮播图和秒杀活动中的布局和数据展示(Recycleview 多条目实现),完成秒杀活动,

让同时跳转到一个空Activity 中;

访问网络接口获取数据,将数据展示在列表上,使用Fresco展示图片将图片显示成圆形。接口如下

 http://result.eolinker.com/umIPmfS6c83237d9c70c7c9510c9b0f97171a308d13b611?uri=homepage

   1.权限:

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
2.依赖:

compile 'com.squareup.okhttp3:okhttp:3.10.0'
compile 'com.google.code.gson:gson:2.2.4'
compile 'com.android.support:recyclerview-v7:26.1.0'
compile 'com.facebook.fresco:fresco:0.12.0'
compile 'com.jakewharton:butterknife:8.8.1'
annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1'
compile 'com.nostra13.universalimageloader:universal-image-loader:1.9.5'
compile 'com.github.bumptech.glide:glide:3.7.0'
  3.主布局页面

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="com.example.dell.zhoukao20180416.view.MainActivity">

    <!--轮播图的RecyclerView布局-->
    <android.support.v7.widget.RecyclerView
        android:id="@+id/img_rcv"
        android:layout_width="match_parent"
        android:layout_height="300px">
    </android.support.v7.widget.RecyclerView>

    <!--倒计时布局-->
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="京东秒杀"
            android:textSize="28px"
            android:textColor="#FF0000"
            android:textStyle="bold"/>

        <TextView
            android:id="@+id/tv_item"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="30px"
            android:text="秒杀剩余时间5s"
            />
    </LinearLayout>

    <!--秒杀的RecyclerView布局-->
    <android.support.v7.widget.RecyclerView
        android:id="@+id/my_rcv"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        ></android.support.v7.widget.RecyclerView>

</LinearLayout>
4.M层接口

package com.example.dell.zhoukao20180416.model;

import com.example.dell.zhoukao20180416.presenter.DataPresenter;

public interface DataModel {
    //请求数据的方法
  void  getData(String url, DataPresenter presenter);
}
5.M层接收实现类

package com.example.dell.zhoukao20180416.model;

import com.example.dell.zhoukao20180416.presenter.DataPresenter;
import com.example.dell.zhoukao20180416.utils.OkhtttpUtils;
import com.google.gson.Gson;
import java.io.IOException;
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.Response;

public class MyDataModel implements DataModel{
    //请求数据的方法
    @Override
    public void getData(String url, final DataPresenter presenter) {

        OkhtttpUtils.doGet(url, new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {}

            @Override
            public void onResponse(Call call, Response response) throws IOException {
                //接收返回的数据
                String json = response.body().string();

                //进行解析 得到集合
                Gson gson = new Gson();
                MyDataBean myDataBean = gson.fromJson(json, MyDataBean.class);
                MyDataBean.DataBean data = myDataBean.getData();

                //调用P层方法将数据传给P                presenter.Success(data);
            }
        });
    }
}
6.网络请求的数据Bean

package com.example.dell.zhoukao20180416.model;

import java.util.List;

public class MyDataBean {

    private int code;
    private String msg;
    private DataBean data;

    public int getCode() {
        return code;
    }

    public void setCode(int code) {
        this.code = code;
    }

    public String getMsg() {
        return msg;
    }

    public void setMsg(String msg) {
        this.msg = msg;
    }

    public DataBean getData() {
        return data;
    }

    public void setData(DataBean data) {
        this.data = data;
    }

    public static class DataBean {

        private ActivityInfoBean activityInfo;
        private boolean creditRecived;
        private GoodsSpreeActivityBean goodsSpreeActivity;
        private List<SubjectsBean> subjects;
        private List<Ad1Bean> ad1;
        private List<Ad5Bean> ad5;
        private List<Ad8Bean> ad8;
        private List<DefaultGoodsListBean> defaultGoodsList;

        public ActivityInfoBean getActivityInfo() {
            return activityInfo;
        }

        public void setActivityInfo(ActivityInfoBean activityInfo) {
            this.activityInfo = activityInfo;
        }

        public boolean isCreditRecived() {
            return creditRecived;
        }

        public void setCreditRecived(boolean creditRecived) {
            this.creditRecived = creditRecived;
        }

        public GoodsSpreeActivityBean getGoodsSpreeActivity() {
            return goodsSpreeActivity;
        }

        public void setGoodsSpreeActivity(GoodsSpreeActivityBean goodsSpreeActivity) {
            this.goodsSpreeActivity = goodsSpreeActivity;
        }

        public List<SubjectsBean> getSubjects() {
            return subjects;
        }

        public void setSubjects(List<SubjectsBean> subjects) {
            this.subjects = subjects;
        }

        public List<Ad1Bean> getAd1() {
            return ad1;
        }

        public void setAd1(List<Ad1Bean> ad1) {
            this.ad1 = ad1;
        }

        public List<Ad5Bean> getAd5() {
            return ad5;
        }

        public void setAd5(List<Ad5Bean> ad5) {
            this.ad5 = ad5;
        }

        public List<Ad8Bean> getAd8() {
            return ad8;
        }

        public void setAd8(List<Ad8Bean> ad8) {
            this.ad8 = ad8;
        }

        public List<DefaultGoodsListBean> getDefaultGoodsList() {
            return defaultGoodsList;
        }

        public void setDefaultGoodsList(List<DefaultGoodsListBean> defaultGoodsList) {
            this.defaultGoodsList = defaultGoodsList;
        }

        public static class ActivityInfoBean {

            private String activityAreaDisplay;
            private List<ActivityInfoListBean> activityInfoList;

            public String getActivityAreaDisplay() {
                return activityAreaDisplay;
            }

            public void setActivityAreaDisplay(String activityAreaDisplay) {
                this.activityAreaDisplay = activityAreaDisplay;
            }

            public List<ActivityInfoListBean> getActivityInfoList() {
                return activityInfoList;
            }

            public void setActivityInfoList(List<ActivityInfoListBean> activityInfoList) {
                this.activityInfoList = activityInfoList;
            }

            public static class ActivityInfoListBean {
            

                private String id;
                private String activityImg;
                private String activityType;
                private String activityData;
                private String activityDataDetail;
                private String activityAreaDisplay;
                private String countDownEnable;
                private String remark;
                private int sort;

                public String getId() {
                    return id;
                }

                public void setId(String id) {
                    this.id = id;
                }

                public String getActivityImg() {
                    return activityImg;
                }

                public void setActivityImg(String activityImg) {
                    this.activityImg = activityImg;
                }

                public String getActivityType() {
                    return activityType;
                }

                public void setActivityType(String activityType) {
                    this.activityType = activityType;
                }

                public String getActivityData() {
                    return activityData;
                }

                public void setActivityData(String activityData) {
                    this.activityData = activityData;
                }

                public String getActivityDataDetail() {
                    return activityDataDetail;
                }

                public void setActivityDataDetail(String activityDataDetail) {
                    this.activityDataDetail = activityDataDetail;
                }

                public String getActivityAreaDisplay() {
                    return activityAreaDisplay;
                }

                public void setActivityAreaDisplay(String activityAreaDisplay) {
                    this.activityAreaDisplay = activityAreaDisplay;
                }

                public String getCountDownEnable() {
                    return countDownEnable;
                }

                public void setCountDownEnable(String countDownEnable) {
                    this.countDownEnable = countDownEnable;
                }

                public String getRemark() {
                    return remark;
                }

                public void setRemark(String remark) {
                    this.remark = remark;
                }

                public int getSort() {
                    return sort;
                }

                public void setSort(int sort) {
                    this.sort = sort;
                }
            }
        }

        public static class GoodsSpreeActivityBean {

            private String id;
            private String 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值