package com.haicaojie.android.ui.recommend;
|
|
import android.content.Context;
|
import android.content.Intent;
|
import android.support.v7.widget.GridLayoutManager;
|
import android.support.v7.widget.RecyclerView;
|
import android.text.Html;
|
import android.text.Spannable;
|
import android.text.SpannableString;
|
import android.view.LayoutInflater;
|
import android.view.View;
|
import android.view.ViewGroup;
|
import android.widget.BaseAdapter;
|
import android.widget.ImageView;
|
import android.widget.LinearLayout;
|
import android.widget.TextView;
|
|
import com.haicaojie.android.BuXinConstant;
|
import com.lcjian.library.util.common.StringUtils;
|
import com.lcjian.library.widget.MyGridView;
|
import com.lcjian.library.widget.RatioLayout;
|
import com.nostra13.universalimageloader.core.DisplayImageOptions;
|
import com.nostra13.universalimageloader.core.ImageLoader;
|
import com.nostra13.universalimageloader.core.assist.ImageScaleType;
|
import com.nostra13.universalimageloader.core.display.FadeInBitmapDisplayer;
|
import com.haicaojie.android.R;
|
import com.haicaojie.android.entity.RecommendGoods;
|
import com.haicaojie.android.entity.RecommendSectionGood;
|
import com.haicaojie.android.util.VerticalImageSpan;
|
|
import java.util.ArrayList;
|
import java.util.List;
|
|
/**
|
* Created by weikou2015 on 2017/12/5.
|
*/
|
|
public class RecommendRecyclerAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
|
private RecyclerView mRecyclerView;
|
|
private List<RecommendGoods> mList = new ArrayList<>();
|
private Context mContext;
|
|
// private View VIEW_FOOTER;
|
private View VIEW_HEADER;
|
|
//Type
|
private int TYPE_NORMAL = 1000;
|
private int TYPE_HEADER = 1001;
|
// private int TYPE_FOOTER = 1002;
|
|
private DisplayImageOptions options;
|
private DisplayImageOptions options_top;
|
|
public RecommendRecyclerAdapter(List<RecommendGoods> data, Context mContext) {
|
this.mList = data;
|
this.mContext = mContext;
|
this.options = new DisplayImageOptions.Builder()
|
.showImageForEmptyUri(R.drawable.ic_goods_default)
|
.showImageOnFail(R.drawable.ic_goods_default)
|
.showImageOnLoading(R.drawable.ic_goods_default)
|
.resetViewBeforeLoading(true).cacheInMemory(true)
|
.cacheOnDisk(true).imageScaleType(ImageScaleType.EXACTLY)
|
.considerExifParams(true)
|
.displayer(new FadeInBitmapDisplayer(300)).build();
|
this.options_top = new DisplayImageOptions.Builder()
|
.showImageForEmptyUri(R.drawable.ic_goods_default_top)
|
.showImageOnFail(R.drawable.ic_goods_default_top)
|
.showImageOnLoading(R.drawable.ic_goods_default_top)
|
.resetViewBeforeLoading(true).cacheInMemory(true)
|
.cacheOnDisk(true).imageScaleType(ImageScaleType.EXACTLY)
|
.considerExifParams(true)
|
.displayer(new FadeInBitmapDisplayer(300)).build();
|
}
|
|
@Override
|
public RecommendRecyclerAdapter.MyHolder onCreateViewHolder(ViewGroup parent, int viewType) {
|
if (viewType == TYPE_HEADER) {
|
return new MyHolder(VIEW_HEADER);
|
} else {
|
View view = LayoutInflater.from(mContext).inflate(R.layout.recommend_type_item, parent, false);
|
MyHolder holder = new MyHolder(view);
|
return holder;
|
}
|
}
|
|
@Override
|
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
|
MyHolder myHolder = (MyHolder) holder;
|
if (!isHeaderView(position)) {
|
if (!BuXinConstant.XIAOMI_APP_STORE) {
|
myHolder.rl_top.setVisibility(View.VISIBLE);
|
}
|
final RecommendGoods info = mList.get(position - 1);
|
ImageLoader.getInstance().displayImage(info.getRecommendSection().getPicUrl(), myHolder.iv_top, options_top);
|
// Glide.with(mContext).load(info.getRecommendSection().getPicUrl()).placeholder(R.drawable.ic_default__top).into(viewHolder.iv_top);
|
//根据服务器传回的参数,设置此控件是否可点击
|
myHolder.rl_top.setOnClickListener(new View.OnClickListener() {
|
@Override
|
public void onClick(View v) {
|
if (!StringUtils.isEmpty(info.getRecommendSection().getJumpUrl())) {
|
Intent intent = new Intent(mContext, SpecialBrowserActivity.class);
|
intent.putExtra("url", info.getRecommendSection().getJumpUrl());
|
intent.putExtra("info", info);
|
mContext.startActivity(intent);
|
}
|
}
|
});
|
myHolder.tv_name.setText(info.getRecommendSection().getName());
|
myHolder.gridView.setNumColumns(2);
|
myHolder.gridView.setAdapter(new RecommendGVAdapter(mContext,
|
info.getRecommendSectionGoodsList()));
|
}
|
}
|
|
@Override
|
public int getItemCount() {
|
int count = (mList == null ? 0 : mList.size());
|
// if (VIEW_FOOTER != null) {
|
// count++;
|
// }
|
|
if (VIEW_HEADER != null) {
|
count++;
|
}
|
return count;
|
}
|
|
@Override
|
public int getItemViewType(int position) {
|
if (isHeaderView(position)) {
|
return TYPE_HEADER;
|
} else {
|
return TYPE_NORMAL;
|
}
|
}
|
|
@Override
|
public void onAttachedToRecyclerView(RecyclerView recyclerView) {
|
try {
|
if (mRecyclerView == null && mRecyclerView != recyclerView) {
|
mRecyclerView = recyclerView;
|
}
|
ifGridLayoutManager();
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
}
|
|
private View getLayout(int layoutId) {
|
return LayoutInflater.from(mContext).inflate(layoutId, null);
|
}
|
|
public void addHeaderView(View headerView) {
|
if (haveHeaderView()) {
|
throw new IllegalStateException("hearview has already exists!");
|
} else {
|
//避免出现宽度自适应
|
ViewGroup.LayoutParams params = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
|
headerView.setLayoutParams(params);
|
VIEW_HEADER = headerView;
|
ifGridLayoutManager();
|
notifyItemInserted(0);
|
}
|
|
}
|
|
// public void addFooterView(View footerView) {
|
// if (haveFooterView()) {
|
// throw new IllegalStateException("footerView has already exists!");
|
// } else {
|
// ViewGroup.LayoutParams params = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
|
// footerView.setLayoutParams(params);
|
//// VIEW_FOOTER = footerView;
|
// ifGridLayoutManager();
|
// notifyItemInserted(getItemCount() - 1);
|
// }
|
// }
|
|
private void ifGridLayoutManager() {
|
if (mRecyclerView == null) return;
|
final RecyclerView.LayoutManager layoutManager = mRecyclerView.getLayoutManager();
|
if (layoutManager instanceof GridLayoutManager) {
|
final GridLayoutManager.SpanSizeLookup originalSpanSizeLookup =
|
((GridLayoutManager) layoutManager).getSpanSizeLookup();
|
((GridLayoutManager) layoutManager).setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
|
@Override
|
public int getSpanSize(int position) {
|
return (isHeaderView(position)) ?
|
((GridLayoutManager) layoutManager).getSpanCount() :
|
1;
|
}
|
});
|
}
|
}
|
|
private boolean haveHeaderView() {
|
return VIEW_HEADER != null;
|
}
|
|
// public boolean haveFooterView() {
|
// return VIEW_FOOTER != null;
|
// }
|
|
private boolean isHeaderView(int position) {
|
return haveHeaderView() && position == 0;
|
}
|
|
// private boolean isFooterView(int position) {
|
// return haveFooterView() && position == getItemCount() - 1;
|
// }
|
|
|
public class MyHolder extends RecyclerView.ViewHolder {
|
TextView tv_name;
|
ImageView iv_top;
|
RatioLayout rl_top;
|
MyGridView gridView;
|
|
public MyHolder(View itemView) {
|
super(itemView);
|
tv_name = (TextView) itemView
|
.findViewById(R.id.item_recommend_tv_name);
|
gridView = (MyGridView) itemView
|
.findViewById(R.id.item_recommend_gv);
|
rl_top = (RatioLayout) itemView.findViewById(R.id.item_recommend_top);
|
iv_top = (ImageView) itemView.findViewById(R.id.iv_movie_cover);
|
}
|
}
|
|
public class RecommendGVAdapter extends BaseAdapter {
|
private List<RecommendSectionGood> wList;
|
private Context wContext;
|
|
public RecommendGVAdapter(Context context, List<RecommendSectionGood> wList) {
|
this.wContext = context;
|
this.wList = wList;
|
|
}
|
|
@Override
|
public int getCount() {
|
return wList == null ? 0 : wList.size();
|
}
|
|
@Override
|
public Object getItem(int position) {
|
return wList.get(position);
|
}
|
|
@Override
|
public long getItemId(int position) {
|
return position;
|
}
|
|
@Override
|
public View getView(final int position, View convertView, ViewGroup parent) {
|
final ViewHolder viewHolder;
|
if (convertView == null) {
|
convertView = LayoutInflater.from(wContext).inflate(
|
R.layout.item_recommend_gv, null);
|
viewHolder = new ViewHolder();
|
viewHolder.ratioLayout = (RatioLayout) convertView
|
.findViewById(R.id.item_recommend_gv_ral);
|
viewHolder.iv_pic = (ImageView) convertView
|
.findViewById(R.id.iv_movie_cover);
|
viewHolder.tv_name = (TextView) convertView
|
.findViewById(R.id.tv_movie_title);
|
|
viewHolder.tv_price = (TextView) convertView.findViewById(R.id.tv_price);
|
viewHolder.tv_coupon_price = (TextView) convertView.findViewById(R.id.tv_coupon_price);
|
viewHolder.tv_coupon_condition = (TextView) convertView.findViewById(R.id.tv_coupon_condition);
|
viewHolder.ll_coupon = (LinearLayout) convertView.findViewById(R.id.ll_coupon);
|
viewHolder.ll_recommend_gv = (LinearLayout) convertView.findViewById(R.id.ll_recommend_gv);
|
viewHolder.tv_favourable = (TextView) convertView.findViewById(R.id.tv_favourable);
|
viewHolder.tv_normal_price = (TextView) convertView.findViewById(R.id.tv_normal_price);
|
viewHolder.tv_sale_num = (TextView) convertView.findViewById(R.id.tv_sale_num);
|
convertView.setTag(viewHolder);
|
} else {
|
viewHolder = (ViewHolder) convertView.getTag();
|
}
|
viewHolder.ratioLayout.setRatio(1.0f);
|
final RecommendSectionGood info = wList.get(position);
|
int shopType = Integer.parseInt(info.getTaoBaoGoodsBrief().getShopType());
|
showImageFace(info.getTaoBaoGoodsBrief().getTitle(), shopType, viewHolder.tv_name);
|
// 图片
|
// Glide.with(mContext).load(info.getTaoBaoGoodsBrief().getPictUrl()).placeholder(R.drawable.ic_goods_default).transform(new GlideRoundTransform(mContext)).into(viewHolder.iv_pic);
|
ImageLoader.getInstance().displayImage(info.getTaoBaoGoodsBrief().getPictUrl(), viewHolder.iv_pic, options);
|
|
if (shopType == 1) {//淘宝
|
viewHolder.tv_normal_price.setText("淘宝价:¥" + info.getTaoBaoGoodsBrief().getZkPrice());
|
} else if (shopType == 2) {//天猫
|
viewHolder.tv_normal_price.setText("天猫价:¥" + info.getTaoBaoGoodsBrief().getZkPrice());
|
}
|
viewHolder.tv_price.setTextColor(mContext.getResources().getColor(R.color.red_money));
|
viewHolder.tv_favourable.setText(" " + info.getTaoBaoGoodsBrief().getTaoBaoHongBaoInfo().getRate());
|
if (Integer.parseInt(info.getTaoBaoGoodsBrief().getShowType()) == 2) {//红包
|
// viewHolder.tv_coupon_price.setText("¥" + info.getZkPrice());
|
viewHolder.tv_normal_price.setVisibility(View.INVISIBLE);
|
viewHolder.tv_price.setText("¥" + info.getTaoBaoGoodsBrief().getZkPrice());
|
viewHolder.tv_coupon_price.setVisibility(View.GONE);
|
} else if (Integer.parseInt(info.getTaoBaoGoodsBrief().getShowType()) == 1) {
|
viewHolder.tv_price.setText("¥" + info.getTaoBaoGoodsBrief().getQuanPrice());
|
viewHolder.tv_coupon_price.setVisibility(View.VISIBLE);
|
viewHolder.tv_normal_price.setVisibility(View.VISIBLE);
|
viewHolder.tv_coupon_price.setText("¥" + info.getTaoBaoGoodsBrief().getTaoBaoQuanInfo().getCouponAmount());
|
} else {
|
viewHolder.tv_price.setText("¥" + info.getTaoBaoGoodsBrief().getQuanPrice());
|
viewHolder.tv_coupon_price.setVisibility(View.VISIBLE);
|
viewHolder.tv_normal_price.setVisibility(View.VISIBLE);
|
viewHolder.tv_coupon_price.setText("¥" + info.getTaoBaoGoodsBrief().getTaoBaoQuanInfo().getCouponAmount());
|
}
|
|
|
viewHolder.tv_sale_num.setText("月销:" + info.getTaoBaoGoodsBrief().getSalesCount());
|
viewHolder.ll_recommend_gv.setOnClickListener(new View.OnClickListener() {
|
@Override
|
public void onClick(View v) {
|
// Intent intent = new Intent(mContext, GoodsDetailBrowerActivity.class);
|
Intent intent = new Intent(mContext, GoodsBrowserActivity.class);
|
intent.putExtra("title", info.getTaoBaoGoodsBrief().getTitle());
|
intent.putExtra("url", info.getTaoBaoGoodsBrief().getAuctionUrl());
|
intent.putExtra("id", info.getTaoBaoGoodsBrief().getAuctionId());
|
mContext.startActivity(intent);
|
}
|
});
|
return convertView;
|
}
|
|
private void showImageFace(String s, int shop, TextView tv) {
|
// 创建一个SpannableString对象,以便插入用ImageSpan对象封装的图像
|
SpannableString spannableString = null;
|
VerticalImageSpan imageSpan = null;
|
if (shop == 1) {//淘宝
|
imageSpan = new VerticalImageSpan(mContext, R.drawable.icon);
|
spannableString = new SpannableString(Html.fromHtml("# " + s));
|
} else if (shop == 2) {//天猫
|
imageSpan = new VerticalImageSpan(mContext, R.drawable.ic_tmall);
|
spannableString = new SpannableString(Html.fromHtml("# " + s));
|
} else {
|
spannableString = new SpannableString(Html.fromHtml(s));
|
}
|
// 用ImageSpan对象替换字符
|
spannableString.setSpan(imageSpan, 0, 2, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
|
tv.setText(spannableString);
|
}
|
|
class ViewHolder {
|
TextView tv_name;
|
TextView tv_price;
|
TextView tv_coupon_price;
|
TextView tv_normal_price;
|
TextView tv_coupon_condition;
|
LinearLayout ll_recommend_gv;
|
LinearLayout ll_coupon;
|
TextView tv_favourable;//红包,券后价
|
TextView tv_sale_num;
|
ImageView iv_pic;
|
RatioLayout ratioLayout;
|
|
}
|
}
|
}
|