package com.cellasoft.univrapp.adapter;
import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import com.cellasoft.univrapp.R;
import com.cellasoft.univrapp.model.Lecturer;
import com.cellasoft.univrapp.widget.ContactItemInterface;
import com.cellasoft.univrapp.widget.ContactsSectionIndexer;
import com.cellasoft.univrapp.widget.LecturerView;
import com.cellasoft.univrapp.widget.OnLecturerViewListener;
import java.util.List;
public class ContactListAdapter extends BaseListAdapter<ContactItemInterface> {
private boolean inSearchMode = false;
private ContactsSectionIndexer indexer = null;
private OnLecturerViewListener lecturerListener;
public ContactListAdapter(Context _context, int _resource) {
super(_context, _resource);
setIndexer(new ContactsSectionIndexer());
}
public ContactListAdapter(Context _context, int _resource,
List<ContactItemInterface> _items) {
super(_context, _resource, _items);
setIndexer(new ContactsSectionIndexer(_items));
}
// get the section textview from row view
// the section view will only be shown for the first item
protected TextView getSectionTextView(View rowView) {
return (TextView) rowView.findViewById(R.id.header);
}
protected LecturerView getLecturerView(View rowView) {
return (LecturerView) rowView.findViewById(R.id.lecturerView);
}
protected void showSectionViewIfFirstItem(View rowView,
ContactItemInterface item, int position) {
TextView sectionTextView = getSectionTextView(rowView);
// if in search mode then dun show the section header
if (inSearchMode) {
sectionTextView.setVisibility(View.GONE);
} else {
// if first item then show the header
if (indexer.isFirstItemInSection(position)) {
sectionTextView.setText(indexer.getSectionTitle(item.getItemForIndex()));
sectionTextView.setVisibility(View.VISIBLE);
} else {
sectionTextView.setVisibility(View.GONE);
}
}
}
// do all the data population for the row here
// subclass overwrite this to draw more items
@Override
protected void populateDataForRow(ViewHolder viewHolder,
ContactItemInterface item, int position) {
if (viewHolder instanceof Holder) {
Holder holder = (Holder) viewHolder;
holder.name.setText(item.getItemForIndex());
holder.subscribed.setVisibility(View.GONE);
}
viewHolder.position = position;
}
// this should be override by subclass if necessary
@Override
public View getView(int position, View convertView, ViewGroup parent) {
Lecturer item = (Lecturer) getItem(position);
LecturerView view;
Holder holder;
if (convertView == null) {
convertView = mInflater.inflate(resource, parent, false);
view = getLecturerView(convertView);
view.setLecturerListener(lecturerListener);
holder = new Holder();
holder.name = (TextView) view.findViewById(R.id.lecturer_name);
holder.thumbnail = (ImageView) view.findViewById(R.id.lecturer_image);
holder.subscribed = (LinearLayout) view.findViewById(R.id.lecturer_subscribed);
convertView.setTag(holder);
} else {
view = getLecturerView(convertView);
holder = (Holder) convertView.getTag();
}
view.setItemViewSelected(item.isSelected);
// for the very first section item, we will draw a section on top
showSectionViewIfFirstItem(convertView, item, position);
// set row items here
populateDataForRow(holder, item, position);
return convertView;
}
public boolean isInSearchMode() {
return inSearchMode;
}
public void setInSearchMode(boolean inSearchMode) {
this.inSearchMode = inSearchMode;
}
public ContactsSectionIndexer getIndexer() {
return indexer;
}
public void setIndexer(ContactsSectionIndexer indexer) {
this.indexer = indexer;
}
public void setOnLecturerViewListener(
OnLecturerViewListener lecturerListener) {
this.lecturerListener = lecturerListener;
}
class Holder extends ViewHolder {
LinearLayout subscribed;
TextView name;
TextView email;
TextView header;
}
}