在项目已被“选中”时触发onItemSelectedListener

时间:2013-03-25 20:21:57

标签: android

我有两个旋转器。当您选择其中一个项目时,所选项目(现在显示在顶部)变为红色。旋转器以相互排斥的方式相互连接:如果您选择一个中的某个,另一个返回到初始(“标题”)选择并变为白色。

这一切都是通过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语句(或者更确切地说,缺少它,向我证明这一点),因为项目是已选择已选中。所以没有任何反应。

我需要的东西相当于Swing中的ButtonGroup,我可以有两个看似不同的菜单但是将所有的子节点添加到一个“互斥”的buttongroup中,这样一次只能选择一个。 Android中是否有任何机制会给我这样的东西,或者任何人都可以帮我解决问题?

1 个答案:

答案 0 :(得分:1)

Spinner无法为已选择的项触发onItemSelected()回调。

有一些覆盖Spinner课程的例子,我无法上班。在此网站上甚至有一个覆盖某些AbsSpinner函数的示例,以生成已选中的Spinner触发项,但不幸的是,由于API更改,该示例不再有效。

因此,我认为最好的方法是使用TextViewButton(用于spindown)和AlertDialog的组合来保持相同{ {1}}您已发送至ArrayAdapter

您必须为Spinner / TextView布局进行自定义工作以及更多自定义工作,以允许更改列表项的颜色/文本属性,但至少需要{{1}总会触发。