提示Spinner没有显示项目

时间:2012-05-23 05:48:12

标签: android eclipse sqlite emulation spinner

我刚刚使用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

3 个答案:

答案 0 :(得分:1)

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

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

ad.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

答案 1 :(得分: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;
        }           
    };

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

答案 2 :(得分:0)

你可以使用notifyDataSetChanged()来重新绘制微调器。

if(c.moveToFirst()){  
    int i = 0;  
    while(c.moveToNext()){  
        ad.add(c.getString(c.getColumnIndex("name")));                
        i++;  
}  
ad.notifyDataSetChanged();