Android Spinner - 如何将列表选择默认为无

标签 android spinner listeners

<分区>

我有一个 Android 表单需要根据某些选择进行 self 更新。该表格目前由 2 个微调器(A 和 B)组成。在微调器 A 做出选择之前,微调器 B 不会创建。选择完成后,B 将显示在 View 中,其内容会根据 A 的选择动态填充。这是我的代码:

public class MyForm extends Activity 
{   
    private final int SEL_ACTIVATE = 0;
    private final int SEL_DEACTIVATE = 1;

    private static final String[] actionList = {"Activate", "Deactivate" };

    @Override
    public void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        table = (TableLayout) findViewById(R.id.table);

        showListA(table);
    }

    public void showListA(View v)
    {        
        rowAction = new TableRow(this);

        Spinner spinner = new Spinner(this);
        spinner.setPrompt("Select...");
        spinner.setOnItemSelectedListener(
            new OnItemSelectedListener() 
            {
                public void onItemSelected(AdapterView<?> parent, View v, int position, long id) 
                {
                    switch (position)
                    {
                    case SEL_ACTIVATE:
                    case SEL_DEACTIVATE:
                        showListB(v);
                        break;
                    }
                }

                public void onNothingSelected(AdapterView<?> arg0) 
                {
                    // TODO Auto-generated method stub
                }
        });

        ArrayAdapter<String> adapter = new ArrayAdapter<String> (this, android.R.layout.simple_spinner_item, actionList);
        adapter.setDropDownViewResource(android.R.layout.simple_dropdown_item_1line);
        spinner.setAdapter(adapter);

        rowAction.addView(tvAction);
        rowAction.addView(spinner);

        table.addView(rowAction, new TableLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
    }

    ...
}

这段代码工作正常。当从列表中选择“Activate”或“Deactivate”时,showListB() 会执行,这与 showListA() 创建新行的方式非常相似,其中包含标签和微调器。

问题是,默认情况下,“Activate”显示在执行 showListB() 的 Spinner 中,并且马上,表单的第二部分是基于“Activate”创建的“选项。我能想到的唯一解决方法是向 Spinner 添加第三个字段,如下所示:

private static final String[] actionList = {"None", "Activate", "Deactivate" };

...

switch (position)
{
case SEL_NONE:
    break;
case SEL_ACTIVATE:
case SEL_DEACTIVATE:
    showListB(v);
    break;
}

这行得通...但我不希望列表中有第三个选项。我只是希望它在默认情况下为空白或显示某种“提示”文本,一旦按下它,它就不是列表中的一个选项。这可能吗?

谢谢

编辑:

xml内容:

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

最佳答案

我的数据大小.xml:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string-array name="chunks">
        <item>2</item>
        <item>4</item>
        <item>8</item>
        <item>16</item>
        <item>32</item>
    </string-array>
</resources>

在 main.xml 中:

<Spinner android:id="@+id/spinnerSize"  
android:layout_marginLeft="50px"
android:layout_width="fill_parent"                  
android:drawSelectorOnTop="true"
android:layout_marginTop="5dip"
android:prompt="@string/SelectSize"
android:layout_marginRight="30px"
android:layout_height="35px" /> 

在 Java 代码中:

Spinner spinnerSize;
ArrayAdapter adapter;

...

spinnerSize = (Spinner)findViewById(R.id.spinnerSize);
adapter = ArrayAdapter.createFromResource(this, R.array.chunks, android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinnerSize.setAdapter(adapter);
spinnerSize.setOnItemSelectedListener(new MyOnItemSelectedListener());

...

class MyOnItemSelectedListener implements OnItemSelectedListener {

    public void onItemSelected(AdapterView<?> parent,
        View view, int pos, long id) {
        chunkSize = new Integer(parent.getItemAtPosition(pos).toString()).intValue();
    }
    public void onNothingSelected(AdapterView<?> parent) {
      // Dummy
    }
}

因此,虽然我可以看到 2 作为我的第一个默认项,但除非用户实际选择它,否则什么也不会发生。

希望这对您有所帮助!

关于Android Spinner - 如何将列表选择默认为无,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4424938/

相关文章:

如果微调器打开(列出)并且您旋转设备,则对话框上的 Android 微调器会崩溃

java - 使用 JComboBox 设置绘制的图的颜色

android - Android 中的左侧导航栏

java - 不幸的是该应用程序已停止

android - 将 HTML 数据加载到 WebView 中,引用本地镜像?

android - 如何更改进度对话框的背景颜色?

android - 如何在android中单击时更改按钮颜色

java - 如何在 Java 中创建文章旋转器正则表达式?

Java Swing : Button's specific id. 如何在不使用 .getActionCommand 的监听器中捕获按下的按钮?

java - 绕过 actionPerformed() 返回 void