将微调器设置为未选中

时间:2012-08-23 18:59:20

标签: android spinner

我目前在我的应用程序中有一大堆微调器。我没有多想,每个微调器,第一个索引都填充N/A。这不是什么大问题,但我希望能让它变得更清洁。

我想知道是否有一种方式而不是调用setSelection( index ),我想知道是否有办法设置Spinner没有选择任何东西。

基本上,我希望微调器有一个项目列表,但在你点击它之前不会显示它们。我也不希望顶部有空白索引。

我认为很可能没有办法做到这一点,所以如果有人确定,请告诉我。

感谢。

4 个答案:

答案 0 :(得分:8)

最好将第一个位置设为空白,以便可以看作没有选择。

答案 1 :(得分:5)

微调器必须具有选定的状态。我建议选择“无选择”

另一种选择是选择底部按钮,然后将其设置为不可见(我将最后一个设置为选中的原因是,您的应用中没有一大块空白,因为它看起来有点无用):

case SPINNER_OPTION_FIRST:
    yourSpinnerLabel.setVisibility(View.VISIBLE);
    yourTextField.setVisibility(View.VISIBLE);
    break;        

// do this for all your other ones if you want

case SPINNER_OPTION_LAST:
    yourSpinnerLabel.setVisibility(View.GONE);
    yourTextField.setVisibility(View.GONE);

也许不是最有效的,但它的确有效,所以我希望有所帮助(还是新的,所以让我有些松懈)!

答案 2 :(得分:1)

修改保存数据的列表可能会导致大量错误或难以管理数据。 您可以使用NONE项在适配器中添加项目,而不是操作列表。 喜欢这个

 ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item);
    adapter.add("NONE");
    adapter.addAll(products);
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    mSpinner.setAdapter(adapter);

答案 3 :(得分:0)

我试过

// getSelectedItemPosition() returns -1 if there is nothing selected
spinner.setSelection(-1); 

但它失败了[微调器从列表中设置第一个元素]。

我添加了#34;空位&#34;旋转数据,模仿&#34;没有选择任何&#34;。请注意“空位”&#39;在&#39;下拉&#39;中不可见列表。

顺便说一句。对C#抱歉,希望这个概念清晰可见。

自定义适配器:

class CustomAdapter<T> : ArrayAdapter<T> {
    public override int Count {
        get { return base.Count - 1; }
    }
}

Init spinner:

var data = new List<string> { "elem 1", "elem 2", "" };
spinner.Adapter = new CustomAdapter<String>(this, Resource.Layout.SimpleSpinnerItem, data);
spinner.SetSelection(2);