package xmpp.client.ui.adapter; import xmpp.client.R; import xmpp.client.service.user.UserState; import android.content.Context; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.TextView; public class StatusAdapter extends BaseAdapter { public static int positionToStatus(int position) { switch (position) { case 0: return UserState.STATUS_AVAILABLE; case 1: return UserState.STATUS_IDLE; case 2: return UserState.STATUS_AWAY; case 3: return UserState.STATUS_DO_NOT_DISTURB; case 4: return UserState.STATUS_OFFLINE; } return UserState.STATUS_OFFLINE; } public static int statusToPosition(int status) { switch (status) { case UserState.STATUS_AVAILABLE: return 0; case UserState.STATUS_IDLE: return 1; case UserState.STATUS_AWAY: return 2; case UserState.STATUS_DO_NOT_DISTURB: return 3; case UserState.STATUS_OFFLINE: return 4; } return 0; } boolean mShowOffline; Context mContext; public StatusAdapter(Context context) { this(context, false); } public StatusAdapter(Context context, boolean showOffline) { super(); mContext = context; mShowOffline = showOffline; } @Override public int getCount() { return mShowOffline ? 5 : 4; } @Override public Object getItem(int position) { return positionToStatus(position); } @Override public long getItemId(int position) { return positionToStatus(position); } @Override public View getView(int position, View convertView, ViewGroup parent) { TextView view; if (convertView instanceof TextView) { view = (TextView) convertView; } else { view = new TextView(mContext); } final int status = positionToStatus(position); view.setTextSize(16); view.setText(mContext.getText(UserState.getStatusTextResourceID(status))); view.setCompoundDrawablesWithIntrinsicBounds( UserState.getStatusIconResourceID(status), 0, 0, 0); view.setCompoundDrawablePadding(5); final int p = mContext.getResources().getDimensionPixelSize( R.dimen.simple_row_margin) * 2; view.setPadding(p, p, p, p); return view; } }