ArraryAdaper的notifyDataSetChanged问题

导师的项目中遇到Spinner中数据项更新的问题,两个Activity,一个Main,一个OpenFileDialog。


Main中的spinner绑定了adapter。

countyList = new ArrayList<String>();
townList = new ArrayList<String>();
villageList = new ArrayList<String>();
organizeList = new ArrayList<String>();

countyAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, countyList);
countyAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
login_spinner1.setAdapter(countyAdapter);
声明如下:

public static ArrayList<String> countyList, townList, villageList, organizeList;
public static String username;
public static String county, town, village, organize;
public static ArrayAdapter<String>  countyAdapter,townAdapter,villageAdapter,organizeAdapter;


都是静态的全局变量。


然后我在OpenFileDialog中改变adapter绑定的数据源,并调用notifyDataSetChanged()

public  void updateCountyList(ArrayList<String> infoList){
    MainActivity.countyList.clear();
    MainActivity.countyList.addAll(infoList);
    MainActivity.countyAdapter.notifyDataSetChanged();
}
调试发现,adapter里的数据源变是变了,但是spinner里显示的没有变化,不知道为什么。

ArraryAdaper的notifyDataSetChanged问题_第1张图片

后来,把adapter在OpenFileDialog中定义

ArrayAdapter<String> adapter1;
adapter1=new ArrayAdapter<String>(mContext,android.R.layout.simple_spinner_item,MainActivity.countyList);
adapter1.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
MainActivity.login_spinner1.setAdapter(adapter1);
再一样的改变数据源,调用notifyDataSetChanged()

public  void updateCountyList(ArrayList<String> infoList){
    MainActivity.countyList.clear();
    MainActivity.countyList.addAll(infoList);
    adapter1.notifyDataSetChanged();
}

结果就成功改变了main里的spinner的数据项。



然而并没有发现到底是哪里的问题,初步猜测是context或者是static的问题? 记录下来以后知道的更多了希望能自己解决。

你可能感兴趣的:(android,android,Studio)