两个微调器在同一活动中看起来不同

时间:2014-01-26 07:18:23

标签: java android android-spinner

我的申请活动图片

enter image description here

第一个微调器正在使用字符串数组资源。第二个是来自XML文件中的arrayList

<Spinner
    android:id="@+id/spnExam"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:entries="@array/Exams" />

<Spinner
    android:id="@+id/spnPaper"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" />

微调器2的代码

            List<String> list = new ArrayList<String>();
            c.moveToFirst();
            do 
            {
                list.add(c.getString(2));
            } while (c.moveToNext());
            c.close();
            ArrayAdapter<String> adapter = new ArrayAdapter<String>(ListSpinners.this, android.R.layout.simple_spinner_dropdown_item, list);
            adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
            spnPaper.setAdapter(adapter);
            db.close();

6 个答案:

答案 0 :(得分:4)

差异是使用风格。您可以从字符串数组向第一个微调器(spnExam)插入数据,该数组将指定在选项列表出现时使用的简单列表布局。

但是第二个通过适配器获取数据的微调器指定了在选择列表出现时使用的简单微调器列表布局。

adapter.setDropDownViewResource(android.R.layout.simple_spinner_item);

我想如果您想要同时使用两个微调器布局,则必须使用android.R.layout.simple_spinner_dropdown_item 而不是 android.R.layout.simple_spinner_item 在您想要显示列表之前,即setDropDownViewResource方法。

如果发生同样的问题,也可以从以下位置更改适配器:

ArrayAdapter<String> adapter = new ArrayAdapter<String>(ListSpinners.this, android.R.layout.simple_spinner_dropdown_item, list);

ArrayAdapter<String> adapter = new ArrayAdapter<String>(ListSpinners.this, android.R.layout.simple_spinner_item, list);

答案 1 :(得分:1)

使用以下代码为两个微调器

ArrayAdapter<String> adapter = new ArrayAdapter<String>(ListSpinners.this, android.R.layout.simple_spinner_item, list);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

答案 2 :(得分:1)

为第二个微调器设置“查看资源”时出现问题。如果您需要与第一个微调器相同的微调器,则必须通过此

进行更改
ArrayAdapter<String> adapter = new ArrayAdapter<String>(ListSpinners.this, android.R.layout.simple_spinner_item, list);

用于java文件中的第二个微调器..

谢谢!

答案 3 :(得分:1)

问题是你的微调视图,所以将你的代码android.R.layout.simple_spinner_dropdown_item更改为android.R.layout.simple_spinner_item。

例如:

ArrayAdapter<String> adapter = new ArrayAdapter<String>(ListSpinners.this, android.R.layout.simple_spinner_item, list);

答案 4 :(得分:1)

我的第一个答案描述了您的问题的不同之处。

这些是你的解决方案:

第一个解决方案:

    ArrayAdapter<String> adapter = new ArrayAdapter<String>(
            ListSpinners.this,
            android.R.layout.simple_spinner_item, list);
    adapter.setDropDownViewResource(android.R.layout.simple_list_item_1);
    spnPaper.setAdapter(adapter);

第二个解决方案和以前一样:

        ArrayAdapter<String> adapter = new ArrayAdapter<String>(
            ListSpinners.this,
            android.R.layout.simple_spinner_item, list);
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_item);
        spnPaper.setAdapter(adapter);

第三和预期的解决方案:

          ArrayAdapter<String> adapter = new ArrayAdapter<String>(
                ListSpinners.this,
                android.R.layout.simple_spinner_item, list);
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spnPaper.setAdapter(adapter);

所有这些对您都有用。

谢谢

答案 5 :(得分:0)

试试这个......

ArrayAdapter<String> adapter = new ArrayAdapter<String>(ListSpinners.this, android.R.layout.simple_spinner_item, list);