我想让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();
但是,它仍然将数据附加到当前列表中。
答案 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]