package io.jari.dumpert.adapters;
import android.app.Activity;
import android.support.v7.widget.CardView;
import android.support.v7.widget.RecyclerView;
import android.text.Html;
import android.text.util.Linkify;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import com.squareup.picasso.Picasso;
import io.jari.dumpert.R;
import io.jari.dumpert.activities.ViewItemActivity;
import io.jari.dumpert.api.Item;
import java.util.ArrayList;
import java.util.Arrays;
/**
* JARI.IO
* Date: 11-12-14
* Time: 23:30
*/
public class CardAdapter extends RecyclerView.Adapter<CardAdapter.ViewHolder> {
private ArrayList<Item> dataSet;
private Activity context;
public static class ViewHolder extends RecyclerView.ViewHolder {
public CardView cardView;
public Activity context;
public Item item;
public ViewHolder(CardView v, final Activity context) {
super(v);
cardView = v;
this.context = context;
v.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ViewItemActivity.launch(ViewHolder.this.context, cardView.findViewById(R.id.card_image), item);
}
});
}
public void update(Item item) {
ImageView imageView = (ImageView)cardView.findViewById(R.id.card_image);
ImageView type = (ImageView)cardView.findViewById(R.id.card_type);
TextView title = (TextView)cardView.findViewById(R.id.card_title);
TextView description = (TextView)cardView.findViewById(R.id.card_description);
TextView stats = (TextView)cardView.findViewById(R.id.card_stats);
TextView date = (TextView)cardView.findViewById(R.id.card_date);
Picasso
.with(context)
.load(item.imageUrls == null ? null : item.imageUrls[0])
.into(imageView);
if(item.photo) type.setImageResource(R.drawable.ic_photo);
else if(item.video) type.setImageResource(R.drawable.ic_play_circle_fill);
else if(item.audio) type.setImageResource(R.drawable.ic_audiotrack);
title.setText(item.title);
description.setText(Html.fromHtml(item.description));
Linkify.addLinks(description, Linkify.ALL);
stats.setText(item.stats);
date.setText(item.date);
int gray = context.getResources().getColor(R.color.gray_bg);
if(item.audio) {
imageView.setBackgroundColor(context.obtainStyledAttributes(new int[]{R.attr.colorPrimaryDark}).getColor(0, gray));
} else {
imageView.setBackgroundColor(gray);
}
this.item = item;
}
}
public CardAdapter(Item[] dataSet, Activity context) {
this.dataSet = new ArrayList<Item>(Arrays.asList(dataSet));
this.context = context;
}
public void removeAll() {
for (int i = dataSet.size()-1; i >= 0; i--) {
remove(dataSet.get(i));
}
}
public void add(Item item) {
dataSet.add(item);
notifyItemInserted(dataSet.size()-1);
}
public void addItems(Item[] items) {
for(Item item : items) {
add(item);
}
}
public void remove(Item item) {
int position = dataSet.indexOf(item);
dataSet.remove(position);
notifyItemRemoved(position);
}
// Create new views (invoked by the layout manager)
@Override
public CardAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
// create a new view
CardView card = (CardView)LayoutInflater.from(parent.getContext())
.inflate(R.layout.card, parent, false);
return new ViewHolder(card, context);
}
// Replace the contents of a view (invoked by the layout manager)
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
holder.update(dataSet.get(position));
}
// Return the size of your dataset (invoked by the layout manager)
@Override
public int getItemCount() {
return dataSet.size();
}
}