我有两个旋转器。当您选择其中一个项目时,所选项目(现在显示在顶部)变为红色。旋转器以相互排斥的方式相互连接:如果您选择一个中的某个,另一个返回到初始(“标题”)选择并变为白色。
这一切都是通过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中是否有任何机制会给我这样的东西,或者任何人都可以帮我解决问题?
答案 0 :(得分:1)
Spinner
无法为已选择的项触发onItemSelected()
回调。
有一些覆盖Spinner
课程的例子,我无法上班。在此网站上甚至有一个覆盖某些AbsSpinner
函数的示例,以生成已选中的Spinner
触发项,但不幸的是,由于API更改,该示例不再有效。
因此,我认为最好的方法是使用TextView
,Button
(用于spindown)和AlertDialog
的组合来保持相同{ {1}}您已发送至ArrayAdapter
。
您必须为Spinner
/ TextView
布局进行自定义工作以及更多自定义工作,以允许更改列表项的颜色/文本属性,但至少需要{{1}总会触发。