spinner没有得到空的android

时间:2014-12-16 22:13:26

标签: android spinner android-spinner

我想让spinner为空以重新加载新数据。

我有这样的代码在spinner中添加数据,这很好。

final Spinner mLocationProvince = (Spinner) findViewById(R.id.location_province_spinner);

ArrayAdapter<MyData> adapter = new ArrayAdapter<MyData>(
                                   getApplicationContext(),
                                   android.R.layout.simple_spinner_item,
                                   items);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
mLocationProvince.setAdapter(adapter);

现在,问题是每次加载之前我想让微调器变空。

我尝试过:

mLocationProvince.setAdapter(null);

adapter.notifyDataSetChanged();

但是,它仍然将数据附加到当前列表中。

2 个答案:

答案 0 :(得分:0)

adapter声明为类变量:

private ArrayAdapter<MyData> adapter;

您的代码将更改为:

final Spinner mLocationProvince = (Spinner) findViewById(R.id.location_province_spinner);

adapter = new ArrayAdapter<MyData>(
                                   getApplicationContext(),
                                   android.R.layout.simple_spinner_item,
                                   items);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
mLocationProvince.setAdapter(adapter);

您可以执行相同适配器实例的方法:notifyDataSetChanged()

adapter.notifyDataSetChanged();

答案 1 :(得分:0)

我个人尝试将适配器设置为null并且它有效,所以我不知道为什么在你的情况下它没有。顺便说一句,我也尝试了另一种可能性。如果你想让微调器变空,你可以这样做:

 items.clear();
 mLocationProvince.setAdapter(adapter);
 adapter.notifyDataSetChanged();

在这种情况下,您正在清除List,您可以从中获取Spinner的下拉列表信息。然后,您可以像平常一样再次填充它,它将自动刷新新信息。

P.S。我做了假设items是List或ArrayList的例子。如果它是一个数组,您只需使用items = new String[0]

重新分配它