微调器未显示所选项目

时间:2014-11-19 09:59:33

标签: android

问题

我的问题是,在我的SpinnerArrayAdapter更改数据后,我的SpinnerdropDownList的商品点击没有反应。 然而,在方向改变发生后,一切正常(?!)。 编辑:我注意到它确实捕获了项目点击,但没有在Spinner上表示/显示它。因为在更改方向后,所选项目会显示在Spinner

建筑

我已将AutoCompleteTextView(ACTV)AutoCompleteAdapter implementing Filterable相关联。将部分数据输入ACTV后,结果会传递到与SpinnerArrayAdapter相关联的Spinner

customListener上的AutoCompleteAdapter设置与SpinnerArrayAdapter相关联,负责在它们之间传递数据。

这种结构背后的原因是用户可以选择两步。选择ACTV中的数据时选择一个下拉菜单,然后选择第二个数据,以防他改变主意。 因此,您可以将POSTCODE置于ACTV选择的省份中,当您错过点击/改变思维而不必再次进入POSTCODE时,可以更改省份。

CODE

这是负责SpinnerArrayAdapter内部数据更改的部分。

@Override
public void setCitiesFromPostcode(ArrayList<String> cities) {
    this.clear();
    this.addAll(cities);
    notifyDataSetChanged();
}

2 个答案:

答案 0 :(得分:2)

我遇到与ArrayAdapter类似的问题。我只是将其更改为BaseAdapter并且它有效。不是真的知道原因是什么,但它在ArrayAdapter的实施中的某个地方。

答案 1 :(得分:2)

两个常见原因:

  1. 事件虽然看起来很大,但如果你的Spinner太小,它可能无法显示该值,请通过将Spinner的宽度和高度硬编码为大的值来确认。如果出现问题,使用自定义微调器项布局可能会有所帮助。
  2. 您在数组中使用自定义对象,而不是简单的字符串或可转换为字符串的数字。在这种情况下,请使用自定义class MyAdapter extends BaseAdapter implements SpinnerAdapter { }类。