AlertDialog не отображает элементы из ListAdapter Скрыть параметры - PullRequest
1 голос
/ 25 февраля 2010

Когда я пытаюсь настроить оповещение с помощью ArrayAdaptor, чтобы отобразить набор элементы, список отображается, но символы элементов невидимы. Если элемент выбран, то символы видны. Царапины моя голова о том, почему. Ценю любые советы. Ниже приведен код и скриншот из эмулятора.

public class MessageTest extends Activity implements 
View.OnClickListener { 
        public final static String debugTag = "MessageDemo::"; 
        Button alert; 
        Button toast; 
        String[] items={"item1", "item2", "item3", "item4", "item5" }; 


        @Override 
        public void onCreate(Bundle icicle) { 
                super.onCreate(icicle); 


                setContentView(R.layout.message); 


                alert=(Button)findViewById(R.id.alert); 
                alert.setOnClickListener(this); 
        } 


        public void onClick(View view) { 
                if (view==alert) { 
                        ArrayAdapter<String> aa = new ArrayAdapter<String>(this, 
                                        android.R.layout.simple_list_item_single_choice, items); 


                        new AlertDialog.Builder(this) 
                                .setTitle("MessageTest") 
                                .setSingleChoiceItems(aa, 0, new DialogInterface.OnClickListener() 
{ 
                                        public void onClick(DialogInterface dlg, int which) { 
                                             Log.d(MessageDemo.debugTag, 
"DialogInterface.OnClickListener::onClick() is called -> which = 
"+which); 
                                        } 
                                }) 
                                .setIcon(android.R.drawable.ic_dialog_alert) 
                                .setPositiveButton("OK", new DialogInterface.OnClickListener() { 
                                        public void onClick(DialogInterface dlg, int sumthin) { 
                                             Log.d(MessageDemo.debugTag, "OK button is clicked -> sumthin 
= "+sumthin); 
                                        } 
                                }) 
                                .setNeutralButton("Close", new DialogInterface.OnClickListener() { 
                                        public void onClick(DialogInterface dlg, int sumthin) { 
                                             Log.d(MessageDemo.debugTag, "Close button is clicked -> 
sumthin = "+sumthin); 
                                                // do nothing -- it will close on its own 
                                        } 
                                }) 
                                .setNegativeButton("Cancel", new DialogInterface.OnClickListener() 
{ 
                                        public void onClick(DialogInterface dlg, int sumthin) { 
                                             Log.d(MessageDemo.debugTag, "Cancel button is clicked -> 
sumthin = "+sumthin); 
                                        } 
                                }) 
                                .show(); 
                } 
        } 

Ответы [ 2 ]

9 голосов
/ 10 декабря 2010

Я знаю, что немного опаздываю с ответом, но у меня была та же проблема, и я исправил ее, просто изменив

ArrayAdapter<String> aa = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_single_choice, items);

до

ArrayAdapter<String> aa = new ArrayAdapter<String>(this, android.R.layout.select_dialog_singlechoice, items);

Надеюсь, это кому-нибудь поможет.

0 голосов
/ 10 октября 2010

Как уже упоминал Квинтин в комментарии, проблемы могут быть вызваны тем, что цвет текста и фон элементов списка одинаковы. Используйте другой шаблон представления для ваших элементов списка, например. android.R.layout.select_dialog_item

builder.setAdapter(
    new ArrayAdapter<Object>(context, android.R.layout.select_dialog_item, my_array)
    {
         @Override
         public View getView(int position, View convertView, ViewGroup parent) 
         {                         
             View row;                         
             if (null == convertView) 
             {
                 row = inflater.inflate(android.R.layout.select_dialog_item, null);
             } 
             else 
             {
                 row = convertView;
             }                          
             TextView tv = (TextView) row.findViewById(android.R.id.text1);
             tv.setText(getItem(position).toString());

             return row;                                          
         }

    }, ...

Инфлятор макета может быть захвачен в контексте:

final LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...