我的微调适配器没有在调用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(); 
+0

它不工作,不更新的微调,这是只有当我用新的数据 –

+0

再次intialize适配器,但我想知道为什么notifyDataSetChange()不工作 –

+0

因为您正在创建一个新的参考。你也可以做'dataAdapter = new ArrayAdapter (this,android.R.layout.simple_spinner_item,categories); spinner.setAdapter(dataAdapter);'当你试图更新数据时 –