2

我刚刚使用 Eclipse 创建了一个适用于 Android 的应用程序,并且一切正常,但是,当我单击 Spinner 时,提示似乎是空的,但值在那里,因为我可以选择它们,我该怎么做才能使它们可见?模拟器可以用,手机不行,谢谢!

空白方块是提示,值在那里!:S

    String sqlSelect = "SELECT id, name, password FROM password";
    Cursor c = db.rawQuery(sqlSelect, null);            


    Spinner sp1 = (Spinner)findViewById(R.id.spinner1);
    ArrayAdapter<String> ad = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item);
    ad.setDropDownViewResource(android.R.layout.simple_spinner_item);
    sp1.setAdapter(ad);        

    System.out.println("Total of records is:" + c.getCount());

    if(c.moveToFirst()){
        int i = 0;

        while(c.moveToNext()){
            ad.add(c.getString(c.getColumnIndex("name")));              
            i++;
        }
    }        

布局:

<Spinner
    android:id="@+id/spinner1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" >
    <!-- Preview: listitem=@android:layout/simple_spinner_item -->
</Spinner>

这是一张图片:

http://img163.imageshack.us/img163/659/cap201205222344.jpg

4

3 回答 3

1

在您发布的图像中,您的微调器显示一些行意味着它从数据库中获取值,但您必须更改微调器项目的背景颜色。

文本大小和背景大小都是白色的,因此您无法在微调器视图中查看文本,因此请尝试使用自定义适配器创建微调器或更改微调器项:

ad.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
于 2012-05-23T06:20:57.320 回答
1

根据我发现的一个示例,我最终使用了 ArrayAdapter 的子类:

    ArrayAdapter<String> ad = new ArrayAdapter<String>(this,        android.R.layout.simple_spinner_item){
        @Override
        public View getDropDownView(int position, View convertView, ViewGroup parent) {
            View view = super.getDropDownView(position, convertView, parent);

            TextView text = (TextView)view.findViewById(android.R.id.text1);
            text.setTextColor(Color.BLUE);

            return view;
        }           
    };

现在我可以看到这些项目,但我仍然想知道为什么我可以在模拟器上看到这些项目而不是手机本身......谢谢!

于 2012-05-24T06:29:01.097 回答
0

您可以使用notifyDataSetChanged()which 会导致重绘微调器。

if(c.moveToFirst()){  
    int i = 0;  
    while(c.moveToNext()){  
        ad.add(c.getString(c.getColumnIndex("name")));                
        i++;  
}  
ad.notifyDataSetChanged();
于 2012-05-23T06:12:25.790 回答