package com.anthony.app.module.newslist;
import android.content.Context;
import android.text.TextUtils;
import android.view.View;
import com.anthony.app.R;
import com.anthony.library.data.bean.NewsItem;
import com.anthony.rvhelper.adapter.MultiItemTypeAdapter;
import com.anthony.rvhelper.base.ItemViewDelegate;
import com.anthony.rvhelper.base.ViewHolder;
/**
* Created by Anthony
* <p>
* 支持多种样式+顶部轮播图的新闻列表样式
*/
public class NewsMultiAdapter extends MultiItemTypeAdapter<NewsItem> {
public NewsMultiAdapter(Context context) {
super(context);
addItemViewDelegate(new TodayTopicDelegate());// docType = 1, 今日头条样式
addItemViewDelegate(new NormalNewsViewDelegate());//docType = 2, 左侧图片 + 右侧标题,描述字段样式
//todo add more
}
/*
docType = 0,顶部轮播图;
docType = 1, 今日头条样式;
docType = 2, 左侧图片 + 右侧标题,描述字段样式
docType = 3, 专题样式;
docType = 4, 纯文字样式;
docType = 5, 顶部标题+下方大图样式;
docType = 6, 顶部标题+下方三张图片样式;
todo 图集....更多样式
*/
public class TodayTopicDelegate implements ItemViewDelegate<NewsItem> {
@Override
public int getItemViewLayoutId() {
return R.layout.prj_news_item_today_topic;
}
@Override
public boolean isForViewType(NewsItem item, int position) {
return item.getType() == 1;
}
@Override
public void convert(ViewHolder holder, NewsItem item, int position) {
holder.setText(R.id.tv_title_center, item.getTitle());
holder.setText(R.id.tv_news_date, item.getTime());
}
}
/**
* 普通的新闻列表项样式 ,图片+标题+时间+新闻来源
* 无图片的新闻列表样式,标题+时间+来源
*/
public class NormalNewsViewDelegate implements ItemViewDelegate<NewsItem> {
@Override
public int getItemViewLayoutId() {
return R.layout.prj_news_item_normal_news;
}
@Override
public boolean isForViewType(NewsItem item, int position) {
return item.getType() != 1;
}
@Override
public void convert(ViewHolder holder, NewsItem item, int position) {
if (item.getImgs() != null || !item.getImgs().get(0).equals("")) {//是否有图
holder.getView(R.id.img_news_image).setVisibility(View.VISIBLE);
String url = item.getImgs().get(0);
holder.setImageUrl(R.id.img_news_image, url);
} else {
holder.getView(R.id.img_news_image).setVisibility(View.GONE);
}
holder.setText(R.id.tv_title_center, item.getTitle());//标题
if (item.getSummary() == null || item.getSummary().equals("")) {//是否有来源字段
holder.setVisible(R.id.tv_news_source, false);
} else {
holder.setVisible(R.id.tv_news_source, true);
holder.setText(R.id.tv_news_source, item.getSummary());
}
if (TextUtils.isEmpty(item.getDate())) { //是否有日期
holder.setVisible(R.id.tv_news_date, false);
holder.setVisible(R.id.news_date_icon, false);
} else {
holder.setVisible(R.id.news_date_icon, true);
holder.setVisible(R.id.tv_news_date, true);
holder.setText(R.id.tv_news_date, item.getDate());
}
}
}
}