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();