Java 我的适配器.notifyDataSetChanged()不工作
如何使用我的新阵列更新ArrayAdapter Belwo是我的ArrayAdapter,其中添加了一个默认数组Java 我的适配器.notifyDataSetChanged()不工作,java,android,android-arrayadapter,Java,Android,Android Arrayadapter,如何使用我的新阵列更新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); adapt
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);
我没有看到任何错误,我所有的Log.d都会恢复正常。但是,当我单击我的微调器时,显示的只是原始的
选择您的状态
我遗漏了一些基本的onCreate和Json加载内容,但是如果有人需要查看,请告诉我。notifyDataSetChanged
不工作,因为您没有更改数据集,您正在创建一个新的副本,适配器不知道的一个。使用列表
而不是数组,并修改传递给适配器的同一列表对象,它将正常工作。如果要保留当前代码,则必须在新数据集上创建新适配器,并将其应用于微调器。不要创建新列表,
清除现有列表,然后调用notifydatasetchanged
someArrayList.clear();
someArrayList.add("element 1");
someArrayList.add("element 2");
yourAdapter.notifyDataSetChanged();
- 首先创建一个列表
- 每次使用新值重新加载列表之前,必须清除现有值a
- 最后使用DataAdapter.notifyDatachanged()。作用
private Spinner spinnerTest; ArrayList<String> list_spinnerTest = new ArrayList<String>(); list_spinnerTest.clear(); String[] NameArray=new String []{"Load From Array","bbbbbbbb","cccccccccc","ddddddddd","eeeeeeeeee"}; int count=5; for (int i = 0; i < count; i++) { list_spinnerTest.add(NameArray[i]); } ArrayAdapter<String> dataAdapterSpinner=new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item,list_spinnerTest); dataAdapterSpinner.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); spinnerTest.setAdapter(dataAdapterSpinner); dataAdapterSpinner.notifyDataSetChanged();
私人纺纱机纺纱试验; ArrayList_spinnerTest=新建ArrayList(); 列表_喷丝头测试。清除(); String[]NameArray=新字符串[]{“从数组加载”、“bbbbbb”、“cccccc”、“dddddddd”、“eeeeeeee”}; 整数计数=5; for(int i=0;i
array\u微调器中
而不是spinner\u data
这是我的错他们都应该是array\u微调器我正在测试一些东西。在ref指南中,它说notifyDataSetChanged告诉适配器数据已更改并要刷新。如果我正在更改数组值,这不算是一个更改吗?@INFERENTONE:因为您没有更改数组值,所以您正在更改适配器甚至不知道的另一个数组中的值。我明白了。有没有一种方法可以在不使用列表的情况下处理我上面的代码?谢谢你提供的信息+1@Denoteone:如果您不想使用列表
,则不能使用notifyDataSetChanged
,因为您实际上正在增加数组的大小,而这是不受支持的。相反,您必须使用新创建的数组制作的新适配器再次调用setAdapter
。再次感谢。我想我会用这个列表试着找出答案。
private Spinner spinnerTest;
ArrayList<String> list_spinnerTest = new ArrayList<String>();
list_spinnerTest.clear();
String[] NameArray=new String []{"Load From Array","bbbbbbbb","cccccccccc","ddddddddd","eeeeeeeeee"};
int count=5;
for (int i = 0; i < count; i++) {
list_spinnerTest.add(NameArray[i]);
}
ArrayAdapter<String> dataAdapterSpinner=new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item,list_spinnerTest);
dataAdapterSpinner.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinnerTest.setAdapter(dataAdapterSpinner);
dataAdapterSpinner.notifyDataSetChanged();