旋转器与一个特殊处理的项目

时间:2015-02-19 15:45:15

标签: android

如何使用下拉列表创建微调器,如下所示:

|------------|
| option1    |
|------------|
| option2    |
|------------|
| option3    |
|------------|
| create new |
|------------|

点击“option1”到“option3” - 只需点击项目即可设为微调器值 但是当我们点击“创建新”时:

  • 下拉列表已关闭
  • 没有选择[spinner保留原始 值]
  • 一些'外部动作被称为'[我在外面注入 旋转器]

更新
解决方案如下Juanjo的https://stackoverflow.com/a/28612543/1367449 通常做这项工作但有一个缺点:在用户点击| create new |和设置spinner.setSelection(previousSelection)之间,微调器显示“创建新”值,然后才切换到“之前的选择”。虽然这个swich持续了几分之一秒,然后它会导致'旋转闪烁效应',希望我们可以消除它。

1 个答案:

答案 0 :(得分:0)

为微调器添加一个额外的空选项并注册一个ItemSelectedListener:

spinner.setOnItemSelectedListener(new OnItemSelectedListener() {
    @Override
    public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) {
        if(position == 4) { // empty (=0), option 1, 2, 3, new (=4)
            spinner.setSelection(0); // empty item
            external_action();
        }
    }

    @Override
    public void onNothingSelected(AdapterView<?> parentView) {
        // Stuff to do
    }
});