如何用我的新数组更新 ArrayAdapter?
Belwo 是我的 ArrayAdapter 添加了一个默认数组。
String[] array_spinner = new String[]{"Select your state."};
ArrayAdapter<String> adapter = new ArrayAdapter<String> (this,android.R.layout.simple_spinner_item,array_spinner);
adapter.setDropDownViewResource(R.layout.state_spinner_layout);
Myspinner.setAdapter(adapter);
现在我将一些解析信息的 JSON 数据加载到 array_spinner_data
中,我想调用 notifyDataSetChanged()
array_spinner = new String[]jsonArray.length();
for (int i=0; i<jsonArray.length(); i++)
{
String styleValue = jsonArray.getJSONArray(i).getString(0);
Log.d(TAG, styleValue);
array_spinner[i] = styleValue;
}
Log.d(TAG, String.valueOf(array_spinner.length));
adapter.notifyDataSetChanged();
我没有看到任何错误,我的所有 Log.d 都按预期返回。但是当我点击我的微调器时,所有显示的都是原始的 Select your state
我遗漏了一些基本的 onCreate 和 Json 加载内容,但如果有人需要查看它,请告诉我。
最佳答案
notifyDataSetChanged
是“不工作”因为你没有改变数据集,你正在创建一个新的副本,一个适配器不知道的。使用 List<>
而不是数组,并修改 that 您传递给适配器的相同列表对象,它将起作用。如果您想保留当前代码,则必须在新数据集上创建一个新适配器并将其应用于您的微调器。
关于java - 我的 adapter.notifyDataSetChanged() 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7459701/