修复版块轮播图的曝光统计缺失问题

This commit is contained in:
chenjuntao
2020-06-15 18:18:43 +08:00
parent 2b8a280768
commit e1e7d2d3d6
2 changed files with 39 additions and 52 deletions

View File

@ -35,21 +35,18 @@ import androidx.annotation.NonNull;
* @author <a href="http://www.trinea.cn" target="_blank">Trinea</a> 2014-2-23
*/
public class ImagePagerAdapter extends RecyclingPagerAdapter {
private Context mContext;
// private List<Integer> imageIdList;
private List<LinkEntity> mSlideEntityList;
private int mSize;
private boolean mIsInfiniteLoop;
private String mSource;
private GameItemData mItemData;
private ArrayList<ExposureSource> mExposureSourceList;
// private ImageIndicator indicator;
public ImagePagerAdapter(Context context, GameItemData itemData, boolean isInfiniteLoop, ExposureSource exposureSource, String source) {
mContext = context;
mSlideEntityList = itemData.getSlideList();
@ -62,30 +59,29 @@ public class ImagePagerAdapter extends RecyclingPagerAdapter {
mExposureSourceList.add(exposureSource);
mExposureSourceList.add(new ExposureSource("轮播图", ""));
}
public int getSize(List<LinkEntity> sourceList) {
return sourceList == null ? 0 : sourceList.size();
}
@Override
public int getCount() {
// Infinite loop
return mIsInfiniteLoop ? Integer.MAX_VALUE : getSize(mSlideEntityList);
}
@Override
public View getView(final int position, View view, ViewGroup container) {
if (view == null) {
view = new SimpleDraweeView(mContext);
}
int index = getPosition(position);
if (index >= mSlideEntityList.size()) return view;
final LinkEntity slideEntity = mSlideEntityList.get(index);
ImageUtils.display(mContext.getResources(), (SimpleDraweeView) view,
slideEntity.getImage(), R.drawable.preload);
ImageUtils.display(mContext.getResources(), (SimpleDraweeView) view, slideEntity.getImage(), R.drawable.preload);
ExposureEvent exposureEvent = null;
if ("game".equals(slideEntity.getType())) {
@ -95,69 +91,60 @@ public class ImagePagerAdapter extends RecyclingPagerAdapter {
exposureEvent = ExposureEvent.createEvent(fakeGameEntity, mExposureSourceList, null, ExposureType.EXPOSURE);
}
// indicator.setPosition(mSlideEntityList.mSize(), getPosition(position));
ExposureEvent finalExposureEvent = exposureEvent;
view.setOnClickListener(v -> {
int size = mSlideEntityList.size();
if (size == 0) return;
// 轮播图数据统计
if (mContext instanceof MainActivity) {
DataLogUtils.uploadLunbotuLog(mContext, slideEntity.getType(),
slideEntity.getText(), String.valueOf(getPosition(position) % size + 1), "游戏库");
DataLogUtils.uploadLunbotuLog(mContext, slideEntity.getType(), slideEntity.getText(), String
.valueOf(getPosition(position) % size + 1), "游戏库");
} else {
DataLogUtils.uploadLunbotuLog(mContext, slideEntity.getType(), slideEntity.getText(), String
.valueOf(getPosition(position) % size + 1), mSource);
}
String indexName = String.valueOf(getPosition(position) % size + 1);
String entrance = StringUtils.buildString("(", mSource, "-轮播图[", slideEntity.getText(), "=", slideEntity.getType(), "=", indexName, "])");
String entrance = StringUtils.buildString("(", mSource, "-轮播图[", slideEntity.getText(), "=", slideEntity
.getType(), "=", indexName, "])");
MtaHelper.onEvent("轮播图", mSource, indexName);
DirectUtils.INSTANCE.directToLinkPage(
mContext,
slideEntity,
entrance,
"轮播图[" + slideEntity.getText() + "=" + slideEntity.getType() + "=" + indexName + "]", finalExposureEvent);
DirectUtils.INSTANCE.directToLinkPage(mContext, slideEntity, entrance, "轮播图[" + slideEntity
.getText() + "=" + slideEntity.getType() + "=" + indexName + "]", finalExposureEvent);
});
mItemData.getExposureEventList().add(finalExposureEvent);
return view;
}
/**
* get really position
*
* @param position
* @return
* get real position
*/
private int getPosition(int position) {
return mIsInfiniteLoop ? position % mSize : position;
}
public int getDataSize() {
return mSlideEntityList == null ? 0 : mSlideEntityList.size();
}
@Override
public int getItemPosition(@NonNull Object object) {
return POSITION_NONE;
}
/**
* @return the mIsInfiniteLoop
*/
public boolean isInfiniteLoop() {
return mIsInfiniteLoop;
}
/**
* @param isInfiniteLoop the mIsInfiniteLoop to set
*/
@ -165,18 +152,19 @@ public class ImagePagerAdapter extends RecyclingPagerAdapter {
this.mIsInfiniteLoop = isInfiniteLoop;
return this;
}
public void checkResetData(List<LinkEntity> list) {
if (mSlideEntityList != list) {
mSlideEntityList = list;
mSize = getSize(list);
public void checkResetData(GameItemData itemData) {
if (mSlideEntityList != itemData.getSlideList()) {
mSlideEntityList = itemData.getSlideList();
mSize = getSize(itemData.getSlideList());
}
if (mItemData.getExposureEventList() != null) {
mItemData.getExposureEventList().clear();
mItemData = itemData;
mItemData.setExposureEventList(new ArrayList<>());
}
notifyDataSetChanged();
}
}

View File

@ -440,7 +440,7 @@ class GameFragmentAdapter(context: Context,
false
}
} else if (slideList != null && slideList.isNotEmpty() && pagerAdapter != null) {
(pagerAdapter as ImagePagerAdapter).checkResetData(slideList)
(pagerAdapter as ImagePagerAdapter).checkResetData(itemData)
} else if (slideList == null || slideList.isEmpty()) {
binding.viewPager.adapter = null
}
@ -451,7 +451,6 @@ class GameFragmentAdapter(context: Context,
} else {
binding.viewPager.stopAutoScroll()
}
}
private fun bindGameItemView(holder: GameItemViewHolder, position: Int) {