【问题标题】:Resetting a spinner after removing values删除值后重置微调器
【发布时间】:2012-05-22 18:52:42
【问题描述】:

我正在尝试在删除值后重新填充 Spinner

目前,该应用程序设置了一个带有字符串值列表的Spinner,然后随着应用程序的使用,其中一些值将从ArrayAdaptor 中删除。然后在某些时候需要使用默认值列表重置Spinner 的列表。我当前的代码只是创建一个新的ArrayAdaptor 并将其分配给Spinner,使用与Spinner 最初设置相同的字符串数组资源:

Spinner mySpinner = (Spinner) findViewById(R.id.spinner);
ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this,
    android.R.layout.simple_list_item_1,
    Static.itemList);
arrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
mySpinner.setAdapter(arrayAdapter);

其中Static.itemlistString[] 类型的数组。

目前项目已从微调器中删除,但使用上述代码不会将Spinner 的值重置为存储在Static.itemList 中的列表。在我看来,这应该可行,但显然缺少一些东西,因为它没有。

完整代码可以在https://github.com/Uruwolf/VO-Miner/blob/master/src/com/uruwolf/vominer/VoMinerActivity.java找到 有问题的方法是从第142行到第147行(我知道缩进是关闭的,在我的编辑器中看起来很好。我不确定为什么它在github上不正确)。

这是我在 StackOverflow 上的第一个问题,如果我做错了什么,请告诉我。

【问题讨论】:

标签: java android spinner default reset


【解决方案1】:

更改列表后,您可能需要在适配器上调用 notifyDataSetChanged()。

我认为更好的方法是避免重新创建新适配器并在将数据重新添加到主列表后调用 notifyDataSetChanged()。您实际上不需要重新创建适配器,因为除了适配器指向 的数据列表之外,适配器中没有任何变化。由于适配器只是指向一个列表并且不使用/包含列表本身,因此如果您更改引用的列表,适配器应该能够获取更改(收到通知时)。​​

这样的事情可能会奏效

定义变量

Static.itemlist ... /*This list is static. Data never changes */
List<String> myListOfStrings;
ArrayAdapter<String> arrayAdapter;

初始化微调器和适配器

Spinner mySpinner = (Spinner) findViewById(R.id.spinner); 

arrayAdapter = new ArrayAdapter<String>(this,     android.R.layout.simple_list_item_1,     myListOfStrings);

arrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

mySpinner.setAdapter(arrayAdapter); 

刷新适配器

myListOfStrings.clear();

myListOfStrings.addAll(Static.itemList); = /* Copy/Add the data from Static.itemList into myListOfStrings */

arrayAdapter.notifyDataSetChanged(); /* Inform the adapter  we've changed items, which should force a refresh */

【讨论】:

    猜你喜欢
    • 2011-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多