diff --git a/res/layout/select_account_list_item.xml b/res/layout/select_account_list_item.xml
new file mode 100644
index 00000000000..d80fef5af80
--- /dev/null
+++ b/res/layout/select_account_list_item.xml
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/src/com/android/settings/sim/SimSettings.java b/src/com/android/settings/sim/SimSettings.java
index cd556b683ba..b9a3cbbc4c4 100644
--- a/src/com/android/settings/sim/SimSettings.java
+++ b/src/com/android/settings/sim/SimSettings.java
@@ -381,11 +381,13 @@ public class SimSettings extends RestrictedSettingsFragment implements Indexable
String[] arr = new String[availableSubInfoLength];
arr = list.toArray(arr);
- ArrayAdapter adapter = new ArrayAdapter(getActivity(),
- android.R.layout.simple_list_item_1, arr);
-
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
+ ListAdapter adapter = new SelectAccountListAdapter(
+ builder.getContext(),
+ R.layout.select_account_list_item,
+ arr);
+
if (id == DATA_PICK) {
builder.setTitle(R.string.select_sim_for_data);
} else if (id == CALLS_PICK) {
@@ -398,6 +400,49 @@ public class SimSettings extends RestrictedSettingsFragment implements Indexable
.create();
}
+ private class SelectAccountListAdapter extends ArrayAdapter {
+ private Context mContext;
+ private int mResId;
+
+ public SelectAccountListAdapter(
+ Context context, int resource, String[] arr) {
+ super(context, resource, arr);
+ mContext = context;
+ mResId = resource;
+ }
+
+ @Override
+ public View getView(int position, View convertView, ViewGroup parent) {
+ LayoutInflater inflater = (LayoutInflater)
+ mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
+
+ View rowView;
+ final ViewHolder holder;
+
+ if (convertView == null) {
+ // Cache views for faster scrolling
+ rowView = inflater.inflate(mResId, null);
+ holder = new ViewHolder();
+ holder.textView = (TextView) rowView.findViewById(R.id.text);
+ holder.imageView = (ImageView) rowView.findViewById(R.id.icon);
+ rowView.setTag(holder);
+ }
+ else {
+ rowView = convertView;
+ holder = (ViewHolder) rowView.getTag();
+ }
+
+ holder.textView.setText(getItem(position));
+ holder.imageView.setImageDrawable(getResources().getDrawable(R.drawable.ic_sim_sd));
+ return rowView;
+ }
+
+ private class ViewHolder {
+ TextView textView;
+ ImageView imageView;
+ }
+ }
+
private void setActivity(Preference preference, SubInfoRecord sir) {
final String key = preference.getKey();