/**
* Copyright 2010 Mark Wyszomierski
*/
package com.joelapenna.foursquared.widget;
import com.joelapenna.foursquared.R;
import com.joelapenna.foursquared.util.AddressBookEmailBuilder.ContactSimple;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.View.OnClickListener;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.TextView;
import java.util.ArrayList;
import java.util.List;
/**
* @date April 26, 2010
* @author Mark Wyszomierski (markww@gmail.com), foursquare.
*/
public class FriendSearchInviteNonFoursquareUserAdapter extends BaseAdapter
implements ObservableAdapter {
private LayoutInflater mInflater;
private int mLayoutToInflate;
private AdapterListener mAdapterListener;
private List<ContactSimple> mEmailsAndNames;
public FriendSearchInviteNonFoursquareUserAdapter(
Context context,
AdapterListener adapterListener) {
super();
mInflater = LayoutInflater.from(context);
mLayoutToInflate = R.layout.add_friends_invite_non_foursquare_user_list_item;
mAdapterListener = adapterListener;
mEmailsAndNames = new ArrayList<ContactSimple>();
}
public void removeObserver() {
}
public FriendSearchInviteNonFoursquareUserAdapter(Context context, int layoutResource) {
super();
mInflater = LayoutInflater.from(context);
mLayoutToInflate = layoutResource;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (position == 0) {
ViewHolderInviteAll holder;
if (convertView == null) {
convertView = mInflater.inflate(R.layout.add_friends_invite_non_foursquare_all_list_item, null);
holder = new ViewHolderInviteAll();
holder.addAll = (Button) convertView.findViewById(R.id.addFriendNonFoursquareAllListItemBtn);
convertView.setTag(holder);
} else {
holder = (ViewHolderInviteAll) convertView.getTag();
}
holder.addAll.setOnClickListener(mOnClickListenerInviteAll);
}
else {
ViewHolder holder;
if (convertView == null) {
convertView = mInflater.inflate(mLayoutToInflate, null);
// Creates a ViewHolder and store references to the two children
// views we want to bind data to.
holder = new ViewHolder();
holder.name = (TextView) convertView.findViewById(R.id.addFriendNonFoursquareUserListItemName);
holder.email = (TextView) convertView.findViewById(R.id.addFriendNonFoursquareUserListItemEmail);
holder.add = (Button) convertView.findViewById(R.id.addFriendNonFoursquareUserListItemBtn);
convertView.setTag(holder);
holder.add.setOnClickListener(mOnClickListenerInvite);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.name.setText(mEmailsAndNames.get(position - 1).mName);
holder.email.setText(mEmailsAndNames.get(position - 1).mEmail);
holder.add.setTag(new Integer(position));
}
return convertView;
}
private OnClickListener mOnClickListenerInvite = new OnClickListener() {
@Override
public void onClick(View v) {
Integer position = (Integer) v.getTag();
mAdapterListener.onBtnClickInvite((ContactSimple) getItem(position));
}
};
private OnClickListener mOnClickListenerInviteAll = new OnClickListener() {
@Override
public void onClick(View v) {
mAdapterListener.onInviteAll();
}
};
public void removeItem(int position) throws IndexOutOfBoundsException {
mEmailsAndNames.remove(position);
notifyDataSetInvalidated();
}
public void setContacts(List<ContactSimple> contacts) {
mEmailsAndNames = contacts;
}
static class ViewHolder {
TextView name;
TextView email;
Button add;
}
static class ViewHolderInviteAll {
Button addAll;
}
public interface AdapterListener {
public void onBtnClickInvite(ContactSimple contact);
public void onInfoAreaClick(ContactSimple contact);
public void onInviteAll();
}
@Override
public int getCount() {
if (mEmailsAndNames.size() > 0) {
return mEmailsAndNames.size() + 1;
}
return 0;
}
@Override
public Object getItem(int position) {
if (position == 0) {
return "";
}
return mEmailsAndNames.get(position - 1);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public int getViewTypeCount() {
return 2;
}
@Override
public int getItemViewType(int position) {
if (position == 0) {
return 0;
}
return 1;
}
}