Преглед изворни кода

限时抢购基本可以了

zengjiebin пре 7 година
родитељ
комит
72ad22fff3

+ 5 - 0
app/src/main/java/com/sheep/gamegroup/model/api/ApiService.java

@@ -1654,6 +1654,11 @@ public interface ApiService {
      */
     @GET("app/yf_shop/receive_coupons/check")
     Observable<BaseMessage> getYfShopReceiveCouponsCheck(@Query("type") int type);
+    /**
+     * 获取商城抢购商品信息
+     */
+    @GET(ApiKey.PROMOTE_GOODS)
+    Observable<BaseMessage> getYfShopPromoteGoods( @Query("page") int page, @Query("per_page") int per_page);
 //---------------------------end 商城相关-------------------------------------
 //---------------------------start 小绵羊3.4.7新增 -- vip相关-------------------------------------
 

+ 61 - 0
app/src/main/java/com/sheep/gamegroup/module/home/adapter/AdpPromoteGoods.java

@@ -0,0 +1,61 @@
+package com.sheep.gamegroup.module.home.adapter;
+
+import android.support.annotation.Nullable;
+import android.view.View;
+import android.widget.ImageView;
+import android.widget.LinearLayout;
+import android.widget.TextView;
+
+import com.chad.library.adapter.base.BaseQuickAdapter;
+import com.chad.library.adapter.base.BaseViewHolder;
+import com.sheep.gamegroup.model.entity.WebParams;
+import com.sheep.gamegroup.module.yf_shop.model.PromoteGoods;
+import com.sheep.gamegroup.util.Jump2View;
+import com.sheep.gamegroup.util.ViewUtil;
+import com.sheep.jiuyan.samllsheep.R;
+import com.sheep.jiuyan.samllsheep.SheepApp;
+
+import java.util.List;
+import java.util.Locale;
+
+/**
+ * Created by realicing on 2019/3/26.
+ * realicing@sina.com
+ * 小绵羊3.5.3新增 -- 限时抢购的adapter
+ */
+public class AdpPromoteGoods extends BaseQuickAdapter<PromoteGoods, BaseViewHolder> {
+    private String baseUrl;
+    public AdpPromoteGoods(int layoutResId, @Nullable List<PromoteGoods> data) {
+        super(layoutResId, data);
+    }
+
+    public void setBaseUrl(String baseUrl) {
+        this.baseUrl = baseUrl;
+    }
+
+    @Override
+    protected void convert(BaseViewHolder baseViewHolder, PromoteGoods item) {
+        ImageView item_icon_iv = baseViewHolder.itemView.findViewById(R.id.item_icon_iv);
+        TextView item_remainder_time = baseViewHolder.itemView.findViewById(R.id.item_remainder_time);
+        TextView item_name_tv = baseViewHolder.itemView.findViewById(R.id.item_name_tv);
+        TextView item_yuan_jia_tv = baseViewHolder.itemView.findViewById(R.id.item_yuan_jia_tv);
+        TextView item_xian_jia_tv = baseViewHolder.itemView.findViewById(R.id.item_xian_jia_tv);
+        LinearLayout item_discount_box = baseViewHolder.itemView.findViewById(R.id.item_discount_box);
+        TextView item_discount_tv = baseViewHolder.itemView.findViewById(R.id.item_discount_tv);
+
+        if(item == null){
+            return;
+        }
+        ViewUtil.setImage(item_icon_iv, item.getGoods_thumb());
+        ViewUtil.setText(item_name_tv, item.getGoods_name());
+        ViewUtil.setText(item_remainder_time, item.getRemainderTime());
+        ViewUtil.setText(item_yuan_jia_tv, item.getPromotePriceText());
+        ViewUtil.setText(item_xian_jia_tv, item.getMarketPriceText());
+        ViewUtil.setText(item_discount_tv, item.getDiscountText());
+        item_discount_box.setOnClickListener(view -> {
+            String url = String.format(Locale.CHINA, "%s?id=%s", baseUrl, item.getGoods_id());
+            Jump2View.getInstance().goWeb(SheepApp.getInstance().getCurrentActivity(), new WebParams(url).setTitle(item.getGoods_name()));
+        });
+
+    }
+}

+ 267 - 0
app/src/main/java/com/sheep/gamegroup/module/home/fragment/FgtPromoteGoodsList.java

@@ -0,0 +1,267 @@
+package com.sheep.gamegroup.module.home.fragment;
+
+import android.app.Activity;
+import android.support.v4.view.ViewPager;
+import android.support.v7.widget.LinearLayoutManager;
+import android.support.v7.widget.RecyclerView;
+import android.text.TextUtils;
+import android.view.View;
+import android.view.ViewGroup;
+
+import com.scwang.smartrefresh.layout.SmartRefreshLayout;
+import com.sheep.gamegroup.absBase.ILoadMore;
+import com.sheep.gamegroup.absBase.IRefresh;
+import com.sheep.gamegroup.model.entity.BaseMessage;
+import com.sheep.gamegroup.model.entity.Release_task;
+import com.sheep.gamegroup.model.entity.RequestParamEty;
+import com.sheep.gamegroup.model.entity.TaskAcceptedEty;
+import com.sheep.gamegroup.model.util.SheepSubscriber;
+import com.sheep.gamegroup.module.home.adapter.AdpPromoteGoods;
+import com.sheep.gamegroup.module.yf_shop.model.GetPromoteGoodsUrl;
+import com.sheep.gamegroup.module.yf_shop.model.PromoteGoods;
+import com.sheep.gamegroup.util.CommonUtil;
+import com.sheep.gamegroup.util.DataUtil;
+import com.sheep.gamegroup.util.ListUtil;
+import com.sheep.gamegroup.util.ViewUtil;
+import com.sheep.jiuyan.samllsheep.R;
+import com.sheep.jiuyan.samllsheep.SheepApp;
+import com.sheep.jiuyan.samllsheep.base.BaseFragment;
+import com.sheep.jiuyan.samllsheep.utils.G;
+
+import org.afinal.simplecache.ApiKey;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import butterknife.BindView;
+import io.reactivex.android.schedulers.AndroidSchedulers;
+import io.reactivex.schedulers.Schedulers;
+
+/**
+ * Created by realicing on 2019/3/26.
+ * realicing@sina.com
+ * 小绵羊3.5.3新增 -- 主页 tab 第三个 限时抢购
+ */
+public class FgtPromoteGoodsList extends BaseFragment implements ILoadMore, IRefresh {
+    @BindView(R.id.view_list)
+    RecyclerView view_list;
+    @BindView(R.id.empty_view)
+    View empty_view;
+
+    private Activity activity;
+    private List<PromoteGoods> list = new ArrayList<>();
+
+
+    private void notifyDataSetChanged() {
+        if(empty_view == null || view_list == null){
+            return;
+        }
+        ViewUtil.notifyDataSetChanged(view_list);
+        updateEmptyView();
+        refreshOrLoadMoreComplete();
+        resetViewPagerHeight();
+    }
+
+
+    public static FgtPromoteGoodsList newInstance() {
+        return new FgtPromoteGoodsList();
+    }
+
+    public FgtPromoteGoodsList() {
+    }
+
+    @Override
+    public int getLayoutId() {
+        return R.layout.net_empty_rv;
+    }
+
+    @Override
+    public void onViewCreated() {
+        activity = getActivity();
+        initView();
+        initListener();
+        refreshData();
+    }
+
+    private AdpPromoteGoods adapter;
+    public void initView() {
+        if (activity == null) {
+            return;
+        }
+        view_list.setLayoutManager(new LinearLayoutManager(activity));
+        view_list.setHasFixedSize(true);
+        view_list.setNestedScrollingEnabled(false);
+        adapter = new AdpPromoteGoods(R.layout.item_hp_promote_goods, list);
+        adapter.bindToRecyclerView(view_list);
+    }
+
+    public void initListener() {
+    }
+
+    private boolean isFirstCache = false;//是否首先尝试缓存
+
+    //先尝试缓存数据,无缓存数据时,再尝试获取网络数据
+    public void initData() {
+        isFirstCache = true;
+        mInitData();
+    }
+
+    //强制刷新数据
+    public void refreshData() {
+        isFirstCache = false;
+        noMore = false;
+        page = 1;
+        list.clear();
+        mInitData();
+    }
+
+
+    public void loadMoreData() {
+        if (ListUtil.size(list) >= per_page * page) {
+            page += 1;
+            //先加载缓存
+            getReleaseFromACache();
+            //再加载网络数据
+            getReleaseFromNetWork();
+        }
+        notifyDataSetChanged();
+    }
+    private int page = 1;
+    private int per_page = DataUtil.PER_PAGE;
+
+    public void mInitData() {
+        CommonUtil.getInstance().resetEmptyView(empty_view);
+        //先加载缓存
+        getReleaseFromACache();
+        //再加载网络数据
+        getReleaseFromNetWork();
+    }
+
+    private int onResumeCount = 0;
+
+    @Override
+    public void onResume() {
+        super.onResume();
+        if (onResumeCount > 0) {//直接全部刷新
+            refreshData();
+        }
+        onResumeCount++;
+    }
+
+
+    //从ACache获取发布的任务列表
+    private void getReleaseFromACache() {
+        try {
+            GetPromoteGoodsUrl getPromoteGoodsUrl = DataUtil.getInstance().getCacheResult(ApiKey.pageKeyUrl(ApiKey.PROMOTE_GOODS, page, per_page), GetPromoteGoodsUrl.class);
+            if(getPromoteGoodsUrl != null){
+                adapter.setBaseUrl(getPromoteGoodsUrl.getUrl());
+                ListUtil.addAllItem(list, getPromoteGoodsUrl.getList());
+            }
+            notifyDataSetChanged();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+    //从网络获取发布的任务列表
+    private void getReleaseFromNetWork() {
+        SheepApp.getInstance().getNetComponent().getApiService().getYfShopPromoteGoods(page, per_page)
+                        .subscribeOn(Schedulers.io())
+                        .observeOn(AndroidSchedulers.mainThread())
+                        .subscribe(new SheepSubscriber<BaseMessage>(SheepApp.getInstance()) {
+                            @Override
+                            public void onNext(BaseMessage baseMessage) {
+                                boolean isNewData = DataUtil.getInstance().isNewData(ApiKey.PROMOTE_GOODS);
+                                if (isNewData) {
+                                    GetPromoteGoodsUrl getPromoteGoodsUrl = baseMessage.getData(GetPromoteGoodsUrl.class);
+                                    if(getPromoteGoodsUrl != null){
+                                        adapter.setBaseUrl(getPromoteGoodsUrl.getUrl());
+                                        ListUtil.addAllItem(list, getPromoteGoodsUrl.getList());
+                                    }
+                                }
+                                notifyDataSetChanged();
+                            }
+
+                            @Override
+                            public void onError(BaseMessage baseMessage) {
+                                notifyDataSetChanged();
+                            }
+                        });
+    }
+
+    public int getDataCount() {
+        return list.size();
+    }
+
+    private boolean noMore = false;
+    public boolean isNoMore() {
+        return noMore;
+    }
+
+
+    //加载完成时更新header或footer
+    protected void refreshOrLoadMoreComplete() {
+        if(smartRefreshLayout != null && getUserVisibleHint()) {
+            if (page == 1) {
+                smartRefreshLayout.finishRefresh();
+            } else {
+                smartRefreshLayout.finishLoadMore();
+            }
+        }
+    }
+    //重新设置ViewPager的高度
+    protected void resetViewPagerHeight() {
+        if(viewPager != null && getUserVisibleHint()){
+            int count = getDataCount();
+            ViewGroup.LayoutParams params = viewPager.getLayoutParams();
+            params.height = count == 0 ? G.HEIGHT / 2 : count * getItemHeight();
+//            LogUtil.println("resetViewPagerHeight", count, about_to_begin, show_type, getItemHeight(), params.height);
+            viewPager.setLayoutParams(params);
+        }
+    }
+
+    @Override
+    public void setUserVisibleHint(boolean isVisibleToUser) {
+        super.setUserVisibleHint(isVisibleToUser);
+        resetViewPagerHeight();
+        if(smartRefreshLayout != null && getUserVisibleHint()) {
+            smartRefreshLayout.setNoMoreData(noMore);
+        }
+    }
+    protected int getItemHeight(){
+        return G.getRealPix(140);
+    }
+
+    //是否显示无数据占位图
+    protected void updateEmptyView(){
+        boolean showEmpty = list.isEmpty();
+        CommonUtil.getInstance().updateEmptyView(empty_view, showEmpty);
+    }
+
+    @Override
+    public void onDestroyView() {
+        super.onDestroyView();
+        view_list = null;
+        viewPager = null;
+        smartRefreshLayout = null;
+    }
+
+    protected ViewPager viewPager;
+    protected SmartRefreshLayout smartRefreshLayout;
+
+    public ViewPager getViewPager() {
+        return viewPager;
+    }
+
+    public void setViewPager(ViewPager viewPager) {
+        this.viewPager = viewPager;
+    }
+
+    public SmartRefreshLayout getSmartRefreshLayout() {
+        return smartRefreshLayout;
+    }
+
+    public void setSmartRefreshLayout(SmartRefreshLayout smartRefreshLayout) {
+        this.smartRefreshLayout = smartRefreshLayout;
+    }
+}

+ 28 - 0
app/src/main/java/com/sheep/gamegroup/module/yf_shop/model/GetPromoteGoodsUrl.java

@@ -0,0 +1,28 @@
+package com.sheep.gamegroup.module.yf_shop.model;
+
+import java.util.List;
+
+/**
+ * Created by realicing on 2019/3/26.
+ * realicing@sina.com
+ */
+public class GetPromoteGoodsUrl {
+    private List<PromoteGoods> list;
+    private String url;
+
+    public List<PromoteGoods> getList() {
+        return list;
+    }
+
+    public void setList(List<PromoteGoods> list) {
+        this.list = list;
+    }
+
+    public String getUrl() {
+        return url;
+    }
+
+    public void setUrl(String url) {
+        this.url = url;
+    }
+}

+ 98 - 0
app/src/main/java/com/sheep/gamegroup/module/yf_shop/model/PromoteGoods.java

@@ -0,0 +1,98 @@
+package com.sheep.gamegroup.module.yf_shop.model;
+
+import com.sheep.gamegroup.util.TimeUtil;
+import com.sheep.gamegroup.util.ViewUtil;
+
+import java.util.Locale;
+
+/**
+ * Created by realicing on 2019/3/26.
+ * realicing@sina.com
+ */
+public class PromoteGoods {
+//    goods_id:	string
+//    goods_thumb:	string
+//    market_price:	string
+//    promote_end_date:	string
+//    promote_price:	string
+//    zhekou:	string
+    private String goods_id;
+    private String goods_name;
+    private String goods_thumb;
+    private String market_price;
+    private String promote_end_date;
+    private String promote_price;
+    private String zhekou;
+
+    public String getGoods_id() {
+        return goods_id;
+    }
+
+    public void setGoods_id(String goods_id) {
+        this.goods_id = goods_id;
+    }
+
+    public String getGoods_name() {
+        return goods_name;
+    }
+
+    public void setGoods_name(String goods_name) {
+        this.goods_name = goods_name;
+    }
+
+    public String getGoods_thumb() {
+        return goods_thumb;
+    }
+
+    public void setGoods_thumb(String goods_thumb) {
+        this.goods_thumb = goods_thumb;
+    }
+
+    public String getMarket_price() {
+        return market_price;
+    }
+
+    public void setMarket_price(String market_price) {
+        this.market_price = market_price;
+    }
+
+    public String getPromote_end_date() {
+        return promote_end_date;
+    }
+
+    public void setPromote_end_date(String promote_end_date) {
+        this.promote_end_date = promote_end_date;
+    }
+
+    public String getPromote_price() {
+        return promote_price;
+    }
+
+    public void setPromote_price(String promote_price) {
+        this.promote_price = promote_price;
+    }
+
+    public String getZhekou() {
+        return zhekou;
+    }
+
+    public void setZhekou(String zhekou) {
+        this.zhekou = zhekou;
+    }
+
+
+
+
+    public String getPromotePriceText() {
+        return String.format(Locale.CHINA, "¥%s", promote_price);
+    }
+    public String getMarketPriceText() {
+        return String.format(Locale.CHINA, "¥%s", market_price);
+    }
+    public String getDiscountText() {
+        return String.format(Locale.CHINA, "%s折", zhekou);
+    }
+    public String getRemainderTime() {
+        return String.format(Locale.CHINA, "剩余:%s", TimeUtil.getDurationText2(Long.valueOf(promote_end_date) - System.currentTimeMillis() / 1000L));
+    }
+}

+ 3 - 1
app/src/main/java/com/sheep/gamegroup/view/fragment/FgtHomeTaskReleaseList.java

@@ -11,6 +11,8 @@ import android.view.View;
 import android.view.ViewGroup;
 
 import com.scwang.smartrefresh.layout.SmartRefreshLayout;
+import com.sheep.gamegroup.absBase.ILoadMore;
+import com.sheep.gamegroup.absBase.IRefresh;
 import com.sheep.gamegroup.di.components.DaggerFgtTryMakeMoneyComponent;
 import com.sheep.gamegroup.di.modules.TryMakeMoneyModule;
 import com.sheep.gamegroup.model.entity.BaseMessage;
@@ -48,7 +50,7 @@ import butterknife.BindView;
  * realicing@sina.com
  * 主页发布的任务列表或者即将开始的任务列表
  */
-public class FgtHomeTaskReleaseList extends BaseFragment implements TryMakeMoneyContract.View {
+public class FgtHomeTaskReleaseList extends BaseFragment implements TryMakeMoneyContract.View, ILoadMore, IRefresh {
     @BindView(R.id.view_list)
     RecyclerView view_list;
     @BindView(R.id.empty_view)

+ 14 - 5
app/src/main/java/com/sheep/gamegroup/view/fragment/FgtSmallSheep.java

@@ -13,6 +13,7 @@ import android.os.Looper;
 import android.os.Message;
 import android.support.annotation.NonNull;
 import android.support.design.widget.TabLayout;
+import android.support.v4.app.Fragment;
 import android.support.v4.app.NotificationManagerCompat;
 import android.support.v4.view.ViewPager;
 import android.support.v4.widget.NestedScrollView;
@@ -46,6 +47,8 @@ import com.scwang.smartrefresh.layout.SmartRefreshLayout;
 import com.scwang.smartrefresh.layout.api.RefreshLayout;
 import com.scwang.smartrefresh.layout.listener.OnRefreshLoadMoreListener;
 import com.sheep.gamegroup.absBase.AbsObserver;
+import com.sheep.gamegroup.absBase.ILoadMore;
+import com.sheep.gamegroup.absBase.IRefresh;
 import com.sheep.gamegroup.di.components.DaggerSmallSheepComponent;
 import com.sheep.gamegroup.di.modules.SmallSheepModule;
 import com.sheep.gamegroup.di.modules.TryMakeMoneyModule;
@@ -68,7 +71,7 @@ import com.sheep.gamegroup.model.util.SheepSubscriber;
 import com.sheep.gamegroup.model.util.ShowRedDot;
 import com.sheep.gamegroup.module.game.util.HpRefreshWelfareHelper;
 import com.sheep.gamegroup.module.home.adapter.AdpHomeList;
-import com.sheep.gamegroup.module.game.adapter.AdpRefreshWelfare;
+import com.sheep.gamegroup.module.home.fragment.FgtPromoteGoodsList;
 import com.sheep.gamegroup.module.skin.util.SkinUtil;
 import com.sheep.gamegroup.presenter.SmallSheepContract;
 import com.sheep.gamegroup.presenter.SmallSheepPresenter;
@@ -603,12 +606,16 @@ public class FgtSmallSheep extends BaseFragment implements SmallSheepContract.Vi
         mAdapter = new AdpTryMakemoney(getChildFragmentManager(), activity);
         FgtHomeTaskReleaseList firstItem = FgtHomeTaskReleaseList.newInstance(0, "is_hot");
         FgtHomeTaskReleaseList secondItem = FgtHomeTaskReleaseList.newInstance(1, "about_to_begin");
+        FgtPromoteGoodsList thirdItem = FgtPromoteGoodsList.newInstance();
         firstItem.setViewPager(mViewPager);
         firstItem.setSmartRefreshLayout(refresh);
         secondItem.setViewPager(mViewPager);
         secondItem.setSmartRefreshLayout(refresh);
+        thirdItem.setViewPager(mViewPager);
+        thirdItem.setSmartRefreshLayout(refresh);
         mAdapter.add(firstItem, "每日必做");
         mAdapter.add(secondItem, "即将开始");
+        mAdapter.add(thirdItem, "限时抢购");
 
         mViewPager.setOffscreenPageLimit(2);
         mViewPager.setAdapter(mAdapter);
@@ -743,12 +750,13 @@ public class FgtSmallSheep extends BaseFragment implements SmallSheepContract.Vi
         refresh.setOnRefreshLoadMoreListener(new OnRefreshLoadMoreListener() {
             @Override
             public void onLoadMore(@NonNull RefreshLayout refreshLayout) {
-                FgtHomeTaskReleaseList item = (FgtHomeTaskReleaseList) mAdapter.getItem(curPosition);
+                Fragment item = mAdapter.getItem(curPosition);
                 if (item == null) {
                     notifyDataSetChanged();
                     return;
                 }
-                item.loadMoreData();
+                if(item instanceof ILoadMore)
+                    ((ILoadMore) item).loadMoreData();
                 notifyDataSetChanged();
             }
 
@@ -915,8 +923,9 @@ public class FgtSmallSheep extends BaseFragment implements SmallSheepContract.Vi
         mHpRefreshWelfareHelper.refreshData();
         if (!isFirst) {
             for (int i = 0; i < mAdapter.getCount(); i++) {
-                FgtHomeTaskReleaseList item = (FgtHomeTaskReleaseList) mAdapter.getItem(i);
-                item.refreshData();
+                Fragment item = mAdapter.getItem(i);
+                if(item instanceof IRefresh)
+                    ((IRefresh) item).refreshData();
             }
         }
         isFirst = false;

+ 1 - 1
app/src/main/java/com/sheep/jiuyan/samllsheep/Config.java

@@ -42,7 +42,7 @@ public class Config {
     //定向奖励
     private static final String STATION_APPOINT_TASK = "/appoint_task/#";
     //随便打
-    private static final String STATION_SUI_BIAN_DA = "/sui_bian_da/#";
+    private static final String STATION_SUI_BIAN_DA = "/casual_call/#";
 
     //path
     //有范商城地址的 key

+ 2 - 0
app/src/main/java/org/afinal/simplecache/ApiKey.java

@@ -90,6 +90,8 @@ public class ApiKey {
     public static final String getGameGroup = "app/game_group";
     //获取 搜索游戏组列表 3.4.10新增
     public static final String getGameGroupSearch = "app/game_group/search";
+    //获取限时抢购列表
+    public static final String PROMOTE_GOODS = "app/yf_shop/promote_goods";
 
     public static final String getPackageVersion(String package_name, String type, int version){
         return String.format(Locale.CHINA, "%s?package_name=%s&type=%s&version=%d", getPackageVersion, package_name, type, version);

BIN
app/src/main/res/drawable-xxhdpi/ic_welfare_level_6.png


+ 6 - 0
app/src/main/res/drawable/shape_red_fd2d54_stroke_rectangle.xml

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="rectangle">
+    <stroke android:color="@color/red_FD2D54"
+        android:width="1dp"/>
+</shape>

+ 102 - 0
app/src/main/res/layout/item_hp_promote_goods.xml

@@ -0,0 +1,102 @@
+<?xml version="1.0" encoding="utf-8"?>
+<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content">
+
+    <ImageView
+        android:id="@+id/item_icon_iv"
+        android:layout_width="100dp"
+        android:layout_height="110dp"
+        android:layout_marginStart="16dp"
+        android:layout_marginTop="19dp"
+        android:layout_marginBottom="11dp"
+        android:src="@mipmap/sheep_logo"
+        app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintTop_toTopOf="parent" />
+
+    <TextView
+        android:id="@+id/item_remainder_time"
+        android:layout_width="0dp"
+        android:layout_height="20dp"
+        android:gravity="center"
+        android:text="剩余:28:36:54"
+        android:textColor="#ffffe764"
+        android:textSize="10sp"
+        android:background="#80000000"
+        app:layout_constraintBottom_toBottomOf="@id/item_icon_iv"
+        app:layout_constraintEnd_toEndOf="@id/item_icon_iv"
+        app:layout_constraintStart_toStartOf="@id/item_icon_iv" />
+
+    <TextView
+        android:id="@+id/item_name_tv"
+        android:layout_width="0dp"
+        android:layout_height="wrap_content"
+        android:layout_marginStart="12dp"
+        android:layout_marginTop="10dp"
+        android:layout_marginEnd="19dp"
+        android:maxLines="2"
+        android:ellipsize="end"
+        android:text="创意简约陶瓷杯马克杯,办公室水杯,木手柄创意简约陶瓷杯马克杯,办公室水杯,木手柄"
+        android:textColor="#ff333333"
+        android:textSize="15sp"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintStart_toEndOf="@id/item_icon_iv"
+        app:layout_constraintTop_toTopOf="@id/item_icon_iv" />
+
+    <TextView
+        android:id="@+id/item_yuan_jia_tv"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginStart="13dp"
+        android:layout_marginBottom="5dp"
+        android:text="¥85"
+        android:textColor="#ffcccccc"
+        android:textSize="14sp"
+        app:layout_constraintBottom_toTopOf="@id/item_xian_jia_tv"
+        app:layout_constraintStart_toEndOf="@id/item_icon_iv" />
+
+    <TextView
+        android:id="@+id/item_xian_jia_tv"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginStart="13dp"
+        android:layout_marginBottom="4dp"
+        android:text="¥65"
+        android:textColor="#fffd2d54"
+        android:textSize="17sp"
+        app:layout_constraintBottom_toBottomOf="@id/item_icon_iv"
+        app:layout_constraintStart_toEndOf="@id/item_icon_iv" />
+
+    <LinearLayout
+        android:id="@+id/item_discount_box"
+        android:layout_width="69dp"
+        android:layout_height="45dp"
+        android:layout_marginEnd="17dp"
+        android:background="@drawable/shape_red_fd2d54_stroke_rectangle"
+        android:orientation="vertical"
+        app:layout_constraintBottom_toBottomOf="@id/item_icon_iv"
+        app:layout_constraintEnd_toEndOf="parent">
+
+        <TextView
+            android:id="@+id/item_discount_tv"
+            android:layout_width="match_parent"
+            android:layout_height="0dp"
+            android:layout_weight="1"
+            android:background="@color/red_FD2D54"
+            android:gravity="center"
+            android:text="7.5折"
+            android:textColor="#ffffffff"
+            android:textSize="12sp" />
+
+        <TextView
+            android:layout_width="match_parent"
+            android:layout_height="0dp"
+            android:layout_weight="1"
+            android:gravity="center"
+            android:text="马上抢"
+            android:textColor="@color/red_FD2D54"
+            android:textSize="12sp" />
+    </LinearLayout>
+</android.support.constraint.ConstraintLayout>