package io.hefuyi.zhihudaily.ui.adapter.holder;
import android.app.Activity;
import android.support.v4.view.PagerAdapter;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.view.ViewGroup;
import java.util.List;
import io.hefuyi.zhihudaily.R;
import io.hefuyi.zhihudaily.mvp.model.Story;
import io.hefuyi.zhihudaily.util.IntentUtils;
import io.hefuyi.zhihudaily.util.ListUtils;
import io.hefuyi.zhihudaily.widget.CirclePageIndicator;
import io.hefuyi.zhihudaily.widget.MyViewPager;
import io.hefuyi.zhihudaily.widget.StoryHeaderView;
/**
* Created by hefuyi on 16/8/4.
*/
public class HeaderViewPagerHolder extends RecyclerView.ViewHolder {
private final MyViewPager mViewPager;
private final CirclePageIndicator mPageIndicator;
private PagerAdapter mPagerAdapter;
public HeaderViewPagerHolder(View itemView, List<Story> stories) {
super(itemView);
mViewPager = (MyViewPager) itemView.findViewById(R.id.viewPager);
mPageIndicator = (CirclePageIndicator) itemView.findViewById(R.id.indicator);
if (ListUtils.isEmpty(stories)) {
return;
} else if (stories.size() < 2) {
mPageIndicator.setVisibility(View.GONE);
}
mPagerAdapter = new HeaderPagerAdapter(stories);
}
public void bindHeaderView(){
if (mViewPager.getAdapter() == null) {
mViewPager.setAdapter(mPagerAdapter);
mPageIndicator.setViewPager(mViewPager);
} else {
mPagerAdapter.notifyDataSetChanged();
}
}
public boolean isAutoScrolling() {
if (mViewPager != null) {
return mViewPager.isAutoScrolling();
}
return false;
}
public void stopAutoScroll() {
if (mViewPager != null) {
mViewPager.stopAutoScroll();
}
}
public void startAutoScroll() {
if (mViewPager != null) {
mViewPager.startAutoScroll();
}
}
private final static class HeaderPagerAdapter extends PagerAdapter {
private final List<Story> mStories;
private int mChildCount;
public HeaderPagerAdapter(List<Story> stories) {
mStories = stories;
}
@Override
public int getCount() {
return mStories == null ? 0 : mStories.size();
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view==object;
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
StoryHeaderView storyHeaderView = StoryHeaderView.newInstance(container);
final Story story = mStories.get(position);
storyHeaderView.bindData(story.getTitle(), story.getImageSource(), story.getImage());
storyHeaderView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
IntentUtils.intentToStoryActivity((Activity) v.getContext(), story);
}
});
container.addView(storyHeaderView);
return storyHeaderView;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView((StoryHeaderView) object);
}
@Override
public void notifyDataSetChanged() {
super.notifyDataSetChanged();
mChildCount = getCount();
}
@Override
public int getItemPosition(Object object) {
if (mChildCount > 0) {
mChildCount--;
return POSITION_NONE;
}
return super.getItemPosition(object);
}
}
}