package ua.kpi.ecampus.ui.adapter;
import android.content.Context;
import android.support.v4.content.ContextCompat;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import ua.kpi.ecampus.model.Subsystem;
import ua.kpi.ecampus.util.CollectionValidator;
import java.util.ArrayList;
import java.util.List;
import butterknife.Bind;
import butterknife.ButterKnife;
/**
* GridSubsystemAdapter manages Subsystem data model and adapts it to
* GridView, which is in MainActivity.
* <p>
* Created by Administrator on 01.02.2016.
*/
public class GridSubsystemAdapter extends BaseAdapter {
private List<Subsystem> mData = new ArrayList<>();
private LayoutInflater mInflater;
private Context mContext;
public GridSubsystemAdapter(Context context, List<Subsystem> data) {
mContext = context;
mInflater = LayoutInflater.from(context);
CollectionValidator.validateOnNull(mData);
mData = data;
}
@Override
public int getCount() {
return mData.size();
}
@Override
public Object getItem(int i) {
return mData.get(i);
}
@Override
public long getItemId(int i) {
return mData.get(i).getIconId();
}
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
GridViewHolder viewHolder;
if (view == null) {
// inflate the GridView item layout
view = mInflater.inflate(ua.kpi.ecampus.R.layout.gridview_item_subsystem,
viewGroup, false);
// initialize the view holder
viewHolder = new GridViewHolder(view);
view.setTag(viewHolder);
} else {
viewHolder = (GridViewHolder) view.getTag();
}
// update the item view
Subsystem item = mData.get(i);
viewHolder.viewIcon.setImageDrawable(ContextCompat.getDrawable
(mContext, item.getIconId()));
viewHolder.viewTitle.setText(item.getName());
return view;
}
protected static class GridViewHolder {
@Bind(ua.kpi.ecampus.R.id.image_view_subsystem_logo)
ImageView viewIcon;
@Bind(ua.kpi.ecampus.R.id.text_view_subsystem_name)
TextView viewTitle;
public GridViewHolder(View itemView) {
ButterKnife.bind(this, itemView);
}
}
}