package com.sjl.yuehu.ui.adapter; import android.content.Context; import android.graphics.Color; import android.support.v4.view.PagerAdapter; import android.support.v4.view.ViewPager; import android.support.v7.widget.RecyclerView; import android.view.View; import android.view.ViewGroup; import android.view.ViewParent; import android.widget.ImageView; import android.widget.TextView; import com.bumptech.glide.Glide; import com.jakewharton.rxbinding.view.RxView; import com.jude.rollviewpager.OnItemClickListener; import com.jude.rollviewpager.RollPagerView; import com.jude.rollviewpager.adapter.LoopPagerAdapter; import com.jude.rollviewpager.hintview.ColorPointHintView; import com.sjl.yuehu.R; import com.sjl.yuehu.data.bean.HomeBean; import com.sjl.yuehu.ui.fragment.HomePageFg; import com.sjl.yuehu.util.SpUtils; import java.util.List; import butterknife.Bind; import butterknife.ButterKnife; /** * Created by 小鹿 on 2017/2/8. */ public class HomePageAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> { private static final int ICON = 0; private static final int COMMON = 1; private Context context; private HomePageFg listener; private HomeBean data; private List<HomeBean.StoriesBean> stories; public HomePageAdapter(Context context, HomePageFg homePageFg) { this.context = context; this.listener = homePageFg; } @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { if (viewType == ICON) { View view2 = View.inflate(context, R.layout.item_zhizhu_top, null); return new ViewHolderIcon(view2); } else { View view = View.inflate(context, R.layout.item_zhizhu, null); return new ViewHolder(view); } } @Override public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { if (holder instanceof ViewHolder) { ((ViewHolder) holder).bindData(data.getStories().get(position - 1)); } else { ((ViewHolderIcon) holder).vp.setAdapter(new ImageLoopAdapter(((ViewHolderIcon) holder).vp)); ((ViewHolderIcon) holder).vp.setHintView(new ColorPointHintView(context, Color.WHITE, Color.GRAY)); ((ViewHolderIcon) holder).vp.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(int position) { if (listener != null) { listener.click(data.getTop_stories().get(position).getId()); } } }); } } @Override public int getItemViewType(int position) { if (position == 0) { return ICON; } return COMMON; } @Override public int getItemCount() { return data != null ? data.getStories().size() : 0; } public void addData(HomeBean data2, boolean isrefresh) { if (isrefresh) { this.data = data2; } else { stories = data.getStories(); stories.addAll(data2.getStories()); } } class ViewHolder extends RecyclerView.ViewHolder { @Bind(R.id.tv_title) TextView tvTitle; @Bind(R.id.iv_zhizhu_item_image) ImageView img; private HomeBean.StoriesBean bean; public ViewHolder(View itemView) { super(itemView); ButterKnife.bind(this, itemView); RxView.clicks(itemView).subscribe(aVoid -> { if (listener != null) { listener.click(bean.getId()); SpUtils.setIsRead(context, bean.getId(), true); notifyDataSetChanged(); } }); } public void bindData(HomeBean.StoriesBean data2) { this.bean = data2; tvTitle.setText(data2.getTitle()); boolean isRead = SpUtils.getIsRead(context, bean.getId()); if (isRead) { tvTitle.setTextColor(Color.GRAY); } if (data2.getImages() != null) { Glide.with(context) .load(data2.getImages().get(0)) .error(R.mipmap.bg_about) .into(img); } else { img.setVisibility(View.GONE); } } } static class ViewHolderIcon extends RecyclerView.ViewHolder { @Bind(R.id.vp) RollPagerView vp; public ViewHolderIcon(View itemView) { super(itemView); ButterKnife.bind(this, itemView); } } public interface OnClickListener { void click(int id); } public class ImageLoopAdapter extends LoopPagerAdapter { @Bind(R.id.top_icon) ImageView topIcon; @Bind(R.id.icon_title) TextView iconTitle; public ImageLoopAdapter(RollPagerView vp) { super(vp); } @Override public View getView(ViewGroup container, int position) { View view = View.inflate(context, R.layout.top_vp_homepage_fg, null); ButterKnife.bind(this, view); iconTitle.setText(data.getTop_stories().get(position).getTitle()); Glide.with(context) .load(data.getTop_stories().get(position).getImage()) .error(R.mipmap.bg_about) .into(topIcon); return view; //add listeners here if necessary } @Override public int getRealCount() { return data.getTop_stories().size(); } } }