package edu.mit.mitmobile2.emergency; import edu.mit.mitmobile2.R; import edu.mit.mitmobile2.emergency.EmergencyDB.ContactsTable; import edu.mit.mitmobile2.objs.EmergencyItem.Contact; import android.content.Context; import android.database.Cursor; import android.text.Spannable; import android.text.style.TextAppearanceSpan; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.CursorAdapter; import android.widget.TextView; class EmergencyContactsAdapter extends CursorAdapter { private Context mContext; private TextAppearanceSpan mContactStyle; private TextAppearanceSpan mPhoneStyle; public EmergencyContactsAdapter(Context context, Cursor cursor) { super(context, cursor); mContext = context; mContactStyle = new TextAppearanceSpan(mContext, R.style.ListItemPrimary); mPhoneStyle = new TextAppearanceSpan(mContext, R.style.ListItemSecondary); } private void setupRow(Cursor cursor, View row) { Contact contact = new Contact(); contact.contact = cursor.getString(cursor.getColumnIndex(ContactsTable.CONTACT_NAME)); contact.phone = cursor.getString(cursor.getColumnIndex(ContactsTable.CONTACT_PHONE)); contact.description = cursor.getString(cursor.getColumnIndex(ContactsTable.CONTACT_DESCRIPTION)); TextView contactTV = (TextView) row.findViewById(R.id.emergencyRowTV); String phone = String.format("(%s.%s.%s)", contact.phone.substring(0, 3), contact.phone.substring(3, 6), contact.phone.substring(6, 10)); String namePlusPhone = contact.contact + " " + phone; contactTV.setText(namePlusPhone, TextView.BufferType.SPANNABLE); Spannable spannable = (Spannable) contactTV.getText(); int separator = contact.contact.length() + 1; spannable.setSpan(mContactStyle, 0, separator, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); spannable.setSpan(mPhoneStyle, separator, spannable.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); TextView descTV = (TextView) row.findViewById(R.id.emergencyDescriptionTV); if (contact.description != null) { descTV.setText(contact.description); descTV.setVisibility(View.VISIBLE); } else { descTV.setVisibility(View.GONE); } } @Override public void bindView(View view, Context context, Cursor cursor) { View row = view; setupRow(cursor, row); } @Override public View newView(Context context, Cursor cursor, ViewGroup parent) { LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE); View row = inflater.inflate(R.layout.emergency_row, null); setupRow(cursor, row); return row; } }