2010-02-25 62 views
1

当我尝试使用ArrayAdaptor设置警报以显示一组 项目时,显示列表,但项目的字符不可见。 如果选择该项目,则字符可见。抓住我的头为什么 。欣赏任何建议。以下是模拟器的代码和 屏幕截图。AlertDialog不显示来自ListAdapter的项目隐藏选项

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(); 
       } 
     } 
+0

我不确定AlertDialog背景是灰色还是ArrayAdapter的字符太灰色,所以你看不到它们! – tbruyelle 2010-02-25 18:48:00

回答

0

由于Quintin已经在评论中提到过,问题的原因可能是文本颜色和列表项的背景是相同的。为您的列表项目使用另一个视图模板,例如。 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); 
9

我知道我有点晚在回答,但我有同样的问题,我通过简单地改变固定它

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

工作,谢谢一堆! – 2011-02-24 19:22:31

+0

@布兰登:作品! Thanx和+1 – barmaley 2011-07-21 12:40:20