导师的项目中遇到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里显示的没有变化,不知道为什么。
后来,把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的问题? 记录下来以后知道的更多了希望能自己解决。