package com.lcodecore.twinklingrefreshlayout.adapter;
import android.content.res.Resources;
import android.graphics.drawable.Drawable;
import android.os.Build;
import android.support.v4.view.ViewPager;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import com.lcodecore.twinklingrefreshlayout.R;
import com.lcodecore.twinklingrefreshlayout.adapter.base.BaseLoopPagerAdapter;
import com.lcodecore.twinklingrefreshlayout.beans.Card;
import java.util.ArrayList;
import java.util.List;
public class LoopViewPagerAdapter extends BaseLoopPagerAdapter {
private final List<Card> mHeroes;
private final ViewGroup mIndicators;
private int mLastPosition;
public LoopViewPagerAdapter(ViewPager viewPager, ViewGroup indicators) {
super(viewPager);
mIndicators = indicators;
mHeroes = new ArrayList<>();
}
public void setList(List<Card> heroes) {
mHeroes.clear();
mHeroes.addAll(heroes);
initIndicators();
notifyDataSetChanged();
}
/**
* oh shit! An indicator view is badly needed!
* this shit have no animation at all.
*/
private void initIndicators() {
if (mIndicators.getChildCount() != mHeroes.size() && mHeroes.size() > 1) {
mIndicators.removeAllViews();
Resources res = mIndicators.getResources();
int size = res.getDimensionPixelOffset(R.dimen.indicator_size);
int margin = res.getDimensionPixelOffset(R.dimen.indicator_margin);
for (int i = 0; i < getPagerCount(); i++) {
ImageView indicator = new ImageView(mIndicators.getContext());
indicator.setAlpha(180);
LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(size, size);
lp.setMargins(margin, 0, 0, 0);
lp.gravity = Gravity.CENTER;
indicator.setLayoutParams(lp);
Drawable drawable = res.getDrawable(R.drawable.selector_indicator);
indicator.setImageDrawable(drawable);
mIndicators.addView(indicator);
}
}
}
@Override
public int getPagerCount() {
return mHeroes.size();
}
@Override
public Card getItem(int position) {
return mHeroes.get(position);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
if (convertView == null) {
convertView = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_viewpager, parent, false);
holder = new ViewHolder();
holder.ivBanner = (ImageView) convertView.findViewById(R.id.ivBanner);
holder.tvName = (TextView) convertView.findViewById(R.id.tvName);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
int picSrcId = mHeroes.get(position).imageSrc;
holder.tvName.setText(mHeroes.get(position).info);
holder.ivBanner.setImageResource(picSrcId);
return convertView;
}
@Override
public void onPageItemSelected(int position) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
mIndicators.getChildAt(mLastPosition).setActivated(false);
mIndicators.getChildAt(position).setActivated(true);
}
mLastPosition = position;
}
public static class ViewHolder {
ImageView ivBanner;
TextView tvName;
}
}