package xmpp.client.ui.adapter;
import xmpp.client.Constants;
import xmpp.client.R;
import xmpp.client.ui.provider.ContactProvider;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;
public class GroupAdapter extends BaseAdapter implements Constants {
// private static final String TAG = GroupAdapter.class.getName();
ContactProvider mRosterContainer;
Context mContext;
public GroupAdapter(Context context, ContactProvider contactProvider) {
mRosterContainer = contactProvider;
mContext = context;
}
@Override
public int getCount() {
return mRosterContainer.getGroups().size() + 5;
}
@Override
public Object getItem(int position) {
if (position == 0 || position == 4) {
return GROUP_DIVIDER;
} else if (position == 1) {
return GROUP_ALL_CONTACTS;
} else if (position == 2) {
return GROUP_ONLINE_CONTACTS;
} else if (position == 3) {
return GROUP_CONFERENCES;
} else {
return mRosterContainer.getGroups().get(position - 5);
}
}
@Override
public long getItemId(int position) {
return getItem(position).hashCode();
}
@Override
public int getItemViewType(int position) {
if (position == 0 || position == 4) {
return 0;
} else {
return 1;
}
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view = convertView;
if (position == 0) {
view = perfectInitiate(view, parent, R.layout.roster_group_divider,
R.id.text_devider, mRosterContainer.getMeUserLogin());
} else if (position == 1) {
view = perfectInitiate(view, parent, R.layout.roster_group_item,
R.id.group_text, mContext.getText(R.string.all_contacts));
} else if (position == 2) {
view = perfectInitiate(view, parent, R.layout.roster_group_item,
R.id.group_text, mContext.getText(R.string.online_contacts));
} else if (position == 3) {
view = perfectInitiate(view, parent, R.layout.roster_group_item,
R.id.group_text, mContext.getText(R.string.conferences));
} else if (position == 4) {
view = perfectInitiate(view, parent, R.layout.roster_group_divider,
R.id.text_devider, mContext.getText(R.string.groups));
} else {
view = perfectInitiate(view, parent, R.layout.roster_group_item,
R.id.group_text, (String) getItem(position));
}
return view;
}
@Override
public int getViewTypeCount() {
return 2;
}
@Override
public boolean isEnabled(int position) {
if (getItemViewType(position) == 0) {
return false;
} else {
return super.isEnabled(position);
}
}
private View perfectInitiate(View baseView, ViewGroup parent, int layout,
int textViewID, CharSequence text) {
if (baseView == null) {
final LayoutInflater layoutInflater = (LayoutInflater) mContext
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
baseView = layoutInflater.inflate(layout, parent, false);
}
TextView textView = (TextView) baseView.findViewById(textViewID);
if (textView == null) {
final LayoutInflater layoutInflater = (LayoutInflater) mContext
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
baseView = layoutInflater.inflate(layout, parent, false);
textView = (TextView) baseView.findViewById(textViewID);
}
textView.setText(text);
return baseView;
}
}