我的微调适配器没有在调用notifyDataSetUpdate变化
问题描述:
更新微调值这是)活动我的微调适配器没有在调用notifyDataSetUpdate变化
private void spinnerSetting() {
DataBaseOperations dataBaseOperations = new DataBaseOperations(this);
spinner = (Spinner) findViewById(R.id.volt_spinner_);
categories = dataBaseOperations.getInvertersType();
// Creating adapter for spinner
dataAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, categories);
// Drop down layout style - list view with radio writeNfcBt
dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
// attaching data adapter to spinner
spinner.setAdapter(dataAdapter);
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
mkvValue = parent.getItemAtPosition(position).toString();
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
}
我的微调功能初始化微调和设置适配器数据OnCreate中被称为(从这一段代码当我点击按钮它更新我的列表(类别),它提供数据到微调适配器,然后我调用notifyDataSetChange(),但它没有微调值,但我的列表(类别)更新,并有新的价值,但微调显示旧值
List<Inverters> allData = inverter.getData();
DataBaseOperations dataBaseOperations = new DataBaseOperations(AdminPanelActivity.this);
dataBaseOperations.addInvertersNames(allData);
categories.clear();
//dataAdapter.clear();
categories = dataBaseOperations.getInvertersType();
dataAdapter.notifyDataSetChanged();
spinner.setAdapter(dataAdapter);
答
适配器持有对其构造函数中传递的列表的引用。
categories = dataBaseOperations.getInvertersType();
dataAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, categories);
dataBaseOperations.getInvertersType()
被创建,它被称为新ArrayList
每次,但适配器行的事不会改变其内部参考。
这就是为什么在调用categories = dataBaseOperations.getInvertersType()
后没有看到更改,这是适配器不知道的新列表。
你应该这样做,而不是:
List<Inverters> allData = inverter.getData();
DataBaseOperations dataBaseOperations = new DataBaseOperations(AdminPanelActivity.this);
dataBaseOperations.addInvertersNames(allData);
categories.clear();
categories.addAll(dataBaseOperations.getInvertersType());
dataAdapter.notifyDataSetChanged();
它不工作,不更新的微调,这是只有当我用新的数据 –
再次intialize适配器,但我想知道为什么notifyDataSetChange()不工作 –
因为您正在创建一个新的参考。你也可以做'dataAdapter = new ArrayAdapter(this,android.R.layout.simple_spinner_item,categories); spinner.setAdapter(dataAdapter);'当你试图更新数据时 –