package org.wikipedia.feed.news;
import android.content.Context;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.view.View;
import org.wikipedia.R;
import org.wikipedia.feed.view.CardHeaderView;
import org.wikipedia.feed.view.FeedAdapter;
import org.wikipedia.feed.view.HorizontalScrollingListCardItemView;
import org.wikipedia.feed.view.HorizontalScrollingListCardView;
import org.wikipedia.util.DateUtil;
import org.wikipedia.views.DefaultViewHolder;
import org.wikipedia.views.ItemTouchHelperSwipeAdapter;
import java.util.List;
public class NewsListCardView extends HorizontalScrollingListCardView<NewsListCard>
implements ItemTouchHelperSwipeAdapter.SwipeableView {
public interface Callback {
void onNewsItemSelected(@NonNull NewsItemCard card);
}
public NewsListCardView(@NonNull Context context) {
super(context);
}
@Override public void setCard(@NonNull NewsListCard card) {
super.setCard(card);
header(card);
set(new RecyclerAdapter(card.items()));
}
private void header(@NonNull NewsListCard card) {
CardHeaderView header = new CardHeaderView(getContext())
.setTitle(R.string.view_card_news_title)
.setSubtitle(DateUtil.getFeedCardDateString(card.date().baseCalendar()))
.setImage(R.drawable.icon_in_the_news)
.setImageCircleColor(R.color.gray_disabled)
.setCard(card)
.setCallback(getCallback());
header(header);
}
private class RecyclerAdapter extends HorizontalScrollingListCardView.RecyclerAdapter<NewsItemCard> {
RecyclerAdapter(@NonNull List<NewsItemCard> items) {
super(items);
}
@Nullable @Override protected FeedAdapter.Callback callback() {
return getCallback();
}
@Override
public void onBindViewHolder(DefaultViewHolder<HorizontalScrollingListCardItemView> holder, int i) {
final NewsItemCard card = item(i);
holder.getView().setText(card.text());
holder.getView().setImage(card.image());
holder.getView().setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
if (getCallback() != null) {
getCallback().onNewsItemSelected(card);
}
}
});
}
}
}