package org.intermine.app.adapter;
/*
* Copyright (C) 2015 InterMine
*
* This code may be freely distributed and modified under the
* terms of the GNU Lesser General Public Licence. This should
* be distributed with the code. See the LICENSE file for more
* information or http://www.gnu.org/copyleft/lesser.html.
*
*/
import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.text.Html;
import android.text.Spanned;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import org.intermine.app.R;
import org.intermine.app.core.List;
import org.intermine.app.util.Strs;
import java.util.ArrayList;
/**
* @author Daria Komkova <Daria_Komkova @ hotmail.com>
*/
public class ListsAdapter extends RecyclerView.Adapter<ListsAdapter.ViewHolder> {
private ArrayList<List> mLists;
private OnItemClickListener mListener;
public ListsAdapter(ArrayList<List> lists, OnItemClickListener listener) {
mLists = lists;
mListener = listener;
}
@Override
public ListsAdapter.ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
Context context = viewGroup.getContext();
View parent = LayoutInflater.from(context).inflate(R.layout.lists_item, viewGroup, false);
return ViewHolder.newInstance(parent);
}
@Override
public void onBindViewHolder(ListsAdapter.ViewHolder viewHolder, int position) {
final List list = mLists.get(position);
viewHolder.setTitle(list.getTitle());
Spanned description = Html.fromHtml(Strs.stripFromBr(list.getDescription()));
viewHolder.setDescription(description);
viewHolder.setSize(Integer.toString(list.getSize()));
viewHolder.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mListener.onItemClick(list);
}
});
}
@Override
public int getItemCount() {
if (null != mLists) {
return mLists.size();
}
return 0;
}
public static interface OnItemClickListener {
void onItemClick(List list);
}
public static final class ViewHolder extends RecyclerView.ViewHolder {
private final View parent;
private final TextView mTitle;
private final TextView mDescription;
private final TextView mSize;
public static ViewHolder newInstance(View parent) {
TextView title = (TextView) parent.findViewById(R.id.list_title);
TextView description = (TextView) parent.findViewById(R.id.list_description);
TextView size = (TextView) parent.findViewById(R.id.list_size);
return new ViewHolder(parent, title, description, size);
}
private ViewHolder(View parent, TextView title, TextView description, TextView size) {
super(parent);
this.parent = parent;
this.mTitle = title;
this.mDescription = description;
this.mSize = size;
}
public void setTitle(CharSequence text) {
mTitle.setText(text);
}
public void setDescription(CharSequence text) {
mDescription.setText(text);
}
public void setSize(CharSequence text) {
mSize.setText(text);
}
public void setOnClickListener(View.OnClickListener listener) {
parent.setOnClickListener(listener);
}
}
}