我目前在我的应用程序中有一大堆微调器。我没有多想,每个微调器,第一个索引都填充N/A
。这不是什么大问题,但我希望能让它变得更清洁。
我想知道是否有一种方式而不是调用setSelection( index )
,我想知道是否有办法设置Spinner没有选择任何东西。
基本上,我希望微调器有一个项目列表,但在你点击它之前不会显示它们。我也不希望顶部有空白索引。
我认为很可能没有办法做到这一点,所以如果有人确定,请告诉我。
感谢。
答案 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);