0

我有两个旋转器。当您选择其中一个项目时,所选项目(现在显示在顶部)变为红色。微调器以一种互斥的方式相互关联:如果您在其中选择某些内容,则另一个将返回到最初的(“标题”)选择并变成白色。

这一切都是通过 onItemSelected 侦听器完成的:

    sectionSpin.setOnItemSelectedListener(new OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> parent, View arg1,
                int position, long arg3) {
            System.out.println("SECTION SPIN # " + position);               

            issueSpin.setSelection(0);                                      
            ((TextView) issueSpin.getChildAt(0)).setTextColor(Color.parseColor("#FFFFFF"));  
            ((TextView) arg1).setTextColor(Color.parseColor("#E3170D"));
....

对于“问题微调器”,反之亦然。我的问题是,如果我从一个微调器转到另一个并选择顶部项目,则 onItemSelectedListener 不会注册(println 语句(或者更确切地说,缺少它,向我证明了这一点),因为该项目正在selected 已经被选中。所以什么也没有发生。

我需要的是与 Swing 中的 ButtonGroup 等效的东西,我可以在其中拥有两个看似不同的菜单,但将所有子项添加到一个“互斥”按钮组中,以便一次只能选择一个。android中是否有任何机制可以给我这样的东西,或者任何人都可以帮助我解决问题?

4

1 回答 1

1

a 不可能为已选择的项目Spinner触发其回调。onItemSelected()

有一些Spinner我无法开始工作的覆盖类的示例。在这个站点上甚至有一个示例覆盖了一些AbsSpinner函数以使Spinner已选择的触发项成为可能,但不幸的是,由于 API 更改,该示例不再有效。

因此,我认为最好的方法是使用 a TextView、 a Button(用于降速)和 an 的组合AlertDialog来保存ArrayAdapter您已经发送到Spinner.

您将不得不为TextView/Button布局进行自定义工作以及更多自定义工作以允许更改列表项的颜色/文本属性,但至少您DialogInterface.onItemClickedListener()将始终触发。

于 2013-03-25T20:43:46.027 回答