/* * Copyright 2014 trinea.cn All right reserved. This software is the confidential and proprietary information of * trinea.cn ("Confidential Information"). You shall not disclose such Confidential Information and shall use it only in * accordance with the terms of the license agreement you entered into with trinea.cn. */ package com.gh.gamecenter.adapter; import android.content.Context; import android.content.Intent; import android.view.View; import android.view.ViewGroup; import com.facebook.drawee.view.SimpleDraweeView; import com.gh.common.util.DataLogUtils; import com.gh.common.util.DataUtils; import com.gh.common.util.GameUtils; import com.gh.common.util.ImageUtils; import com.gh.common.util.NewsUtils; import com.gh.gamecenter.NewsDetailActivity; import com.gh.gamecenter.R; import com.gh.gamecenter.SubjectActivity; import com.gh.gamecenter.entity.SlideEntity; import java.util.HashMap; import java.util.List; import java.util.Map; /** * ImagePagerAdapter * * @author Trinea 2014-2-23 */ public class ImagePagerAdapter extends RecyclingPagerAdapter { private Context context; // private List imageIdList; private List slideList = null; private int size; private boolean isInfiniteLoop; // private ImageIndicator indicator; public ImagePagerAdapter(Context context, List slideList, boolean isInfiniteLoop) { this.context = context; this.slideList = slideList; this.size = getSize(slideList); this.isInfiniteLoop = isInfiniteLoop; } @Override public int getCount() { // Infinite loop return isInfiniteLoop ? Integer.MAX_VALUE : getSize(slideList); } public int getSize(List sourceList) { return sourceList == null ? 0 : sourceList.size(); } /** * get really position * * @param position * @return */ private int getPosition(int position) { return isInfiniteLoop ? position % size : position; } @Override public View getView(final int position, View view, ViewGroup container) { if (view == null) { view = new SimpleDraweeView(context); } final SlideEntity slideEntity = slideList.get(getPosition(position)); ImageUtils.getInstance().display(context.getResources(), (SimpleDraweeView) view, slideEntity.getImage(), R.drawable.preload); // indicator.setPosition(slideList.size(), getPosition(position)); view.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Map kv = new HashMap<>(); kv.put("名字", slideEntity.getName()); kv.put("位置", getPosition(position) + 1); DataUtils.onEvent(context, "点击", "游戏-插件-滚动图", kv); // 首页轮播图数据统计 DataLogUtils.uploadLunbotuLog(context, slideEntity.getType(), slideEntity.getName(), String.valueOf(getPosition(position) + 1)); if ("game".equals(slideEntity.getType())) { String entrance = "(游戏-插件:滚动图[" + slideEntity.getName() + "=" + slideEntity.getType() + "=" + (getPosition(position) + 1) + "])"; GameUtils.startGameDetailActivity(context, slideEntity.getLink(), entrance); } else if ("news".equals(slideEntity.getType())) { // 统计阅读量 NewsUtils.statNewsViews(slideEntity.getLink()); Intent intent = new Intent(context, NewsDetailActivity.class); intent.putExtra("newsId", slideEntity.getLink()); intent.putExtra("entrance", "(游戏-插件:滚动图[" + slideEntity.getName() + "=" + slideEntity.getType() + "=" + (getPosition(position) + 1) + "])"); context.startActivity(intent); } else if ("column".equals(slideEntity.getType())) { Intent intent = new Intent(context, SubjectActivity.class); intent.putExtra("id", slideEntity.getLink()); intent.putExtra("name", slideEntity.getName()); context.startActivity(intent); } } }); return view; } /** * @return the isInfiniteLoop */ public boolean isInfiniteLoop() { return isInfiniteLoop; } /** * @param isInfiniteLoop * the isInfiniteLoop to set */ public ImagePagerAdapter setInfiniteLoop(boolean isInfiniteLoop) { this.isInfiniteLoop = isInfiniteLoop; return this; } }