版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Charles_dai001/article/details/77676703
import android.content.Context; import android.content.Intent; import android.os.Handler; import android.os.Message; import android.support.v4.view.PagerAdapter; import android.support.v4.view.ViewPager; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.GridView; import android.widget.ImageView; import android.widget.TextView; import android.widget.Toast; import com.atguigu.shoppingmall.R; import com.atguigu.shoppingmall.app.GoodsInfoActivity; import com.atguigu.shoppingmall.home.activity.GoodsListActivity; import com.atguigu.shoppingmall.home.bean.GoodsBean; import com.atguigu.shoppingmall.home.bean.ResultBean; import com.atguigu.shoppingmall.home.uitls.AlphaPageTransformer; import com.atguigu.shoppingmall.home.uitls.ScaleInTransformer; import com.atguigu.shoppingmall.utils.Constants; import com.bumptech.glide.Glide; import com.youth.banner.Banner; import com.youth.banner.BannerConfig; import com.youth.banner.Transformer; import com.youth.banner.listener.OnBannerClickListener; import com.youth.banner.listener.OnLoadImageListener; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; public class HomeRecycleAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> { public static final String GOODS_BEAN = "goods_bean"; /** * 上下文 */ private Context mContext; /** * 数据Bean对象 */ private ResultBean resultBean; /** * 五种类型 */ /** * 横幅广告 */ public static final int BANNER = 0; /** * 频道 */ public static final int CHANNEL = 1; /** * 活动 */ public static final int ACT = 2; /** * 秒杀 */ public static final int SECKILL = 3; /** * 推荐 */ public static final int RECOMMEND = 4; /** * 热卖 */ public static final int HOT = 5; /** * 当前类型 */ public int currentType = BANNER; private final LayoutInflater mLayoutInflater; public HomeRecycleAdapter(Context mContext, ResultBean resultBean) { this.mContext = mContext; this.resultBean = resultBean; mLayoutInflater = LayoutInflater.from(mContext); } /** * 根据位置得到类型-系统调用 * * @param position * @return */ @Override public int getItemViewType(int position) { switch (position) { case BANNER: currentType = BANNER; break; case CHANNEL: currentType = CHANNEL; break; case ACT: currentType = ACT; break; case SECKILL: currentType = SECKILL; break; case RECOMMEND: currentType = RECOMMEND; break; case HOT: currentType = HOT; break; } return currentType; } /** * 返回总条数,共六种类型 * * @return */ @Override public int getItemCount() { return 6; } @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { if (viewType == BANNER) { return new BannerViewHolder(mLayoutInflater.inflate(R.layout.banner_viewpager, null), mContext, resultBean); } else if (viewType == CHANNEL) { return new ChannelViewHolder(mLayoutInflater.inflate(R.layout.channel_item, null), mContext); } else if (viewType == ACT) { return new ActViewHolder(mLayoutInflater.inflate(R.layout.act_item, null), mContext); } else if (viewType == SECKILL) { return new SeckillViewHolder(mLayoutInflater.inflate(R.layout.seckill_item, null), mContext); } else if (viewType == RECOMMEND) { return new RecommendViewHolder(mLayoutInflater.inflate(R.layout.recommend_item, null), mContext); } else if (viewType == HOT) { return new HotViewHolder(mLayoutInflater.inflate(R.layout.hot_item, null), mContext); } return null; } /** * 绑定数据 * * @param holder * @param position */ @Override public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { if (getItemViewType(position) == BANNER) { BannerViewHolder bannerViewHolder = (BannerViewHolder) holder; bannerViewHolder.setData(resultBean.getBanner_info()); } else if (getItemViewType(position) == CHANNEL) { ChannelViewHolder channelViewHolder = (ChannelViewHolder) holder; channelViewHolder.setData(resultBean.getChannel_info()); } else if (getItemViewType(position) == ACT) { ActViewHolder actViewHolder = (ActViewHolder) holder; actViewHolder.setData(resultBean.getAct_info()); } else if (getItemViewType(position) == SECKILL) { SeckillViewHolder seckillViewHolder = (SeckillViewHolder) holder; seckillViewHolder.setData(resultBean.getSeckill_info()); } else if (getItemViewType(position) == RECOMMEND) { RecommendViewHolder recommendViewHolder = (RecommendViewHolder) holder; recommendViewHolder.setData(resultBean.getRecommend_info()); } else if (getItemViewType(position) == HOT) { HotViewHolder hotViewHolder = (HotViewHolder) holder; hotViewHolder.setData(resultBean.getHot_info()); } } class HotViewHolder extends RecyclerView.ViewHolder { private TextView tv_more_hot; private GridView gv_hot; private Context mContext; public HotViewHolder(View itemView, Context mContext) { super(itemView); tv_more_hot = (TextView) itemView.findViewById(R.id.tv_more_hot); gv_hot = (GridView) itemView.findViewById(R.id.gv_hot); this.mContext = mContext; } public void setData(final List<ResultBean.HotInfoBean> data) { HotGridViewAdapter adapter = new HotGridViewAdapter(mContext, data); gv_hot.setAdapter(adapter); //点击事件 gv_hot.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { // Toast.makeText(mContext, "position:" + position, Toast.LENGTH_SHORT).show(); String cover_price = data.get(position).getCover_price(); String name = data.get(position).getName(); String figure = data.get(position).getFigure(); String product_id = data.get(position).getProduct_id(); GoodsBean goodsBean = new GoodsBean(name, cover_price, figure, product_id); Intent intent = new Intent(mContext, GoodsInfoActivity.class); intent.putExtra(GOODS_BEAN, goodsBean); mContext.startActivity(intent); } }); } } class RecommendViewHolder extends RecyclerView.ViewHolder { private TextView tv_more_recommend; private GridView gv_recommend; private Context mContext; public RecommendViewHolder(View itemView, Context mContext) { super(itemView); tv_more_recommend = (TextView) itemView.findViewById(R.id.tv_more_recommend); gv_recommend = (GridView) itemView.findViewById(R.id.gv_recommend); this.mContext = mContext; } public void setData(final List<ResultBean.RecommendInfoBean> data) { RecommendGridViewAdapter adapter = new RecommendGridViewAdapter(mContext, data); gv_recommend.setAdapter(adapter); //点击事件 gv_recommend.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { //Toast.makeText(mContext, "position:" + position, Toast.LENGTH_SHORT).show(); String cover_price = data.get(position).getCover_price(); String name = data.get(position).getName(); String figure = data.get(position).getFigure(); String product_id = data.get(position).getProduct_id(); GoodsBean goodsBean = new GoodsBean(name, cover_price, figure, product_id); // Intent intent = new Intent(mContext, GoodsInfoActivity.class); intent.putExtra(GOODS_BEAN, goodsBean); mContext.startActivity(intent); } }); } } private boolean isFirst = true; private TextView tvTime; private int dt; private Handler handler = new Handler() { @Override public void handleMessage(Message msg) { if (msg.what == 0) { dt = dt - 1000; SimpleDateFormat sd = new SimpleDateFormat("HH:mm:ss"); tvTime.setText(sd.format(new Date(dt))); handler.removeMessages(0); handler.sendEmptyMessageDelayed(0, 1000); if (dt == 0) { handler.removeMessages(0); } } } }; class SeckillViewHolder extends RecyclerView.ViewHolder { private TextView tvMore; private RecyclerView recyclerView; public Context mContext; public SeckillViewHolder(View itemView, Context mContext) { super(itemView); tvTime = (TextView) itemView.findViewById(R.id.tv_time_seckill); tvMore = (TextView) itemView.findViewById(R.id.tv_more_seckill); recyclerView = (RecyclerView) itemView.findViewById(R.id.rv_seckill); this.mContext = mContext; } public void setData(final ResultBean.SeckillInfoBean data) { //设置时间 if (isFirst) { // dt = (int) (Integer.parseInt(data.getEnd_time()) - System.currentTimeMillis()); dt = (int) (Integer.parseInt(data.getEnd_time()) - (Integer.parseInt(data.getStart_time()))); isFirst = false; } //设置RecyclerView recyclerView.setLayoutManager(new LinearLayoutManager(mContext, LinearLayoutManager.HORIZONTAL, false)); SeckillRecyclerViewAdapter adapter = new SeckillRecyclerViewAdapter(mContext, data); recyclerView.setAdapter(adapter); //倒计时 handler.sendEmptyMessageDelayed(0, 1000); //点击事件 adapter.setOnSeckillRecyclerView(new SeckillRecyclerViewAdapter.OnSeckillRecyclerView() { @Override public void onClick(int position) { ResultBean.SeckillInfoBean.ListBean listBean = data.getList().get(position); String name = listBean.getName(); String cover_price = listBean.getCover_price(); String figure = listBean.getFigure(); String product_id = listBean.getProduct_id(); GoodsBean goodsBean = new GoodsBean(name, cover_price, figure, product_id); // Intent intent = new Intent(mContext, GoodsInfoActivity.class); intent.putExtra(GOODS_BEAN, goodsBean); mContext.startActivity(intent); // Toast.makeText(mContext, "position:" + position, Toast.LENGTH_SHORT).show(); } }); } } class ActViewHolder extends RecyclerView.ViewHolder { public ViewPager actViewPager; public Context mContext; public ActViewHolder(View itemView, Context mContext) { super(itemView); actViewPager = (ViewPager) itemView.findViewById(R.id.act_viewpager); this.mContext = mContext; } public void setData(final List<ResultBean.ActInfoBean> data) { actViewPager.setPageMargin(20); actViewPager.setOffscreenPageLimit(3); actViewPager.setPageTransformer(true, new AlphaPageTransformer(new ScaleInTransformer())); actViewPager.setAdapter(new PagerAdapter() { @Override public int getCount() { return data.size(); } @Override public boolean isViewFromObject(View view, Object object) { return view == object; } @Override public Object instantiateItem(ViewGroup container, int position) { ImageView view = new ImageView(mContext); view.setScaleType(ImageView.ScaleType.FIT_XY); //绑定数据 Glide.with(mContext) .load(Constants.BASE_URl_IMAGE + data.get(position).getIcon_url()) .into(view); container.addView(view); return view; } @Override public void destroyItem(ViewGroup container, int position, Object object) { container.removeView((View) object); } }); //点击事件 actViewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { } @Override public void onPageSelected(int position) { Toast.makeText(mContext, "position:" + position, Toast.LENGTH_SHORT).show(); } @Override public void onPageScrollStateChanged(int state) { } }); } } class ChannelViewHolder extends RecyclerView.ViewHolder { public GridView gvChannel; public Context mContext; public ChannelViewHolder(View itemView, Context mContext) { super(itemView); gvChannel = (GridView) itemView.findViewById(R.id.gv_channel); this.mContext = mContext; } public void setData(final List<ResultBean.ChannelInfoBean> channel_info) { gvChannel.setAdapter(new ChannelAdapter(mContext, channel_info)); //点击事件 gvChannel.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { if (position <= 8) { Intent intent = new Intent(mContext, GoodsListActivity.class); intent.putExtra("position", position); mContext.startActivity(intent); } else { } } }); } } class BannerViewHolder extends RecyclerView.ViewHolder { public Banner banner; public Context mContext; public ResultBean resultBean; public BannerViewHolder(View itemView, Context context, ResultBean resultBean) { super(itemView); banner = (Banner) itemView.findViewById(R.id.banner); this.mContext = context; this.resultBean = resultBean; } public void setData(final List<ResultBean.BannerInfoBean> banner_info) { banner.setBannerStyle(BannerConfig.CIRCLE_INDICATOR); //如果你想用自己项目的图片加载,那么----->自定义图片加载框架 List<String> imageUris = new ArrayList<>(); for (int i = 0; i < resultBean.getBanner_info().size(); i++) { imageUris.add(resultBean.getBanner_info().get(i).getImage()); } banner.setBannerAnimation(Transformer.Accordion); banner.setImages(imageUris, new OnLoadImageListener() { @Override public void OnLoadImage(ImageView view, Object url) { /** * 这里你可以根据框架灵活设置 */ Glide.with(mContext) .load(Constants.BASE_URl_IMAGE + url) .into(view); } }); //设置点击事件 banner.setOnBannerClickListener(new OnBannerClickListener() { @Override public void OnBannerClick(int position) { if (position - 1 < banner_info.size()) { int option = banner_info.get(position - 1).getOption(); String product_id = ""; String name = ""; String cover_price = ""; if (position - 1 == 0) { product_id = "627"; cover_price = "32.00"; name = "剑三T恤批发"; } else if (position - 1 == 1) { product_id = "21"; cover_price = "8.00"; name = "同人原创】剑网3 剑侠情缘叁 Q版成男 口袋胸针"; } else { product_id = "1341"; cover_price = "50.00"; name = "【蓝诺】《天下吾双》 剑网3同人本"; } String image = banner_info.get(position - 1).getImage(); GoodsBean goodsBean = new GoodsBean(name, cover_price, image, product_id); Intent intent = new Intent(mContext, GoodsInfoActivity.class); intent.putExtra("goods_bean", goodsBean); mContext.startActivity(intent); } } }); } } }