【发布时间】:2014-04-30 17:37:42
【问题描述】:
我正在获取一个 JSON 对象并在 AsyncTask 中使用 GSON 对其进行解析。 之后,我使用静态 void 将来自 onPostExecute 的列表传递给我的活动中的静态列表。
然后,我遍历该列表并填写另一个列表。 在 onCreate 中,我将该列表调整为 Spinner,并显示选项,但我无法选择它们。
当我尝试使用该列表中的项目 0 时,它会给我 IndexOutOfBounds - 索引 0,大小 0,或者它给我一个 NullPointerException,这取决于我在做什么,但微调器将这些项目显示为存在。如果我使用 .add("something") 添加元素,.size() 会返回 1,但微调器会显示更多元素。
代码如下:
public List<City> fetchedList = new ArrayList<City>(); //List that was fetched from JSO
public List<String> cityList = new ArrayList<String>(); //List of cities derived from fetched list using getCity();
public static String[] countryList; //List that is fetched from strings.xml array
//Called from onPostExecute to fill cityList with cities
public void spinner(List<City> lista) {
fetchedList = lista;
for (City element : fetchedList) { //For each City
cityList.add(element.getCity()); //Get city name and put it into our list
} }
这里是 onCreate 部分:
CityFetcher fetch = new CityFetcher(); // Do our asyncTask here
fetch.execute(); // Run Forrest, run!
countryList = getResources().getStringArray(R.array.countries);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_dropdown_item, cityList);
ArrayAdapter<String> stringAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_dropdown_item, countryList);
origin.setAdapter(adapter);
city.setAdapter(stringAdapter);
【问题讨论】:
-
检查 SetCity () 中的代码。如果在列表中没有值,那么它必须因空指针异常而崩溃。
-
但是微调器显示它已经有值了。
-
尝试使用调试器,设置断点并单步执行程序,观察变量的变化。
-
正在尝试,但无法弄清楚如何在 android studio 中设置断点:\