gpt4 book ai didi

android - 如何将字符串迭代器值添加到 ArrayAdapter?

转载 作者:行者123 更新时间:2023-11-29 19:57:10 25 4
gpt4 key购买 nike

我正在尝试将字符串迭代器的值添加到 ArrayAdapter,但没有得到正确的结果。这是我的代码:

Spinner copyFromCity = (Spinner) findViewById(R.id.spinner);
// Create an ArrayAdapter using the string array and a default spinner layout
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this,
R.array.predefined_cities, android.R.layout.simple_spinner_item);


// Add values from our custom cities onto the Adapter via SharedPreferences

prefs = getSharedPreferences(MY_PREFS_NAME, Context.MODE_PRIVATE);
Iterator<String> userCities = readCitiesFromPref();

while(userCities.hasNext()){

adapter.add(userCities.next());
}


// Specify the layout to use when the list of choices appears
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
// Apply the adapter to the spinner
copyFromCity.setAdapter(adapter);

微调器仅显示我的 pref 文件中的值,而不显示来自 readCitiesFromPref() 方法的额外字符串值;

我已经验证返回的 Iterator String 有值。在 Debug模式下,我能够看到这没有添加到适配器从首选项中拥有的现有 mObjects

谢谢

编辑:根据请求添加 readCitiesFromPref() 方法,尽管我认为它是无关紧要的,因为返回值是准确的并且具有预期的字符串迭代器:

protected Iterator<String> readCitiesFromPref() {

// See if preferences store this
JSONObject citiesList = null;
Iterator<String> userCities = null;
try {

// Yes, so get the values out
citiesList = new JSONObject(prefs.getAll());

userCities = citiesList.keys();

while (userCities.hasNext()) {

Log.i("Ram = ", userCities.next());
}

} catch (NullPointerException e1) {

//
}

return userCities;
}

最佳答案

问题出在 readCitiesFromPref 中,因为当您创建迭代器时,您也在迭代所有元素,并且只有在这之后您才返回迭代器,它将具有 的值hasNext() = null,因此这段代码 while(userCities.hasNext()){ 将永远不会被执行。要解决此问题,只需在加载所有值后返回迭代器即可。

关于android - 如何将字符串迭代器值添加到 ArrayAdapter?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36630989/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com