java - 微调器选择是更新微调器项目之前的记录

标签 java android android-studio

我通过网络服务中的 json 填充微调器。微调器被填充,设置索引 0 的选择,onitemselected 方法触发并启动另一个方法来根据微调器中的值填充 ListView 。

当我用不同的数据重新填充微调器时,就会出现问题。微调器被填满,设置了索引 0 的选择, onitemselected 触发,当我输出所选项目时,它显示索引 0 处的上一个项目。 spinneritems.get 获取旧数据而不是新填充的数据。

这里正在填充旋转器

for (int i = 0; i < recordsArray.length(); i++) {
    JSONObject record = recordsArray.getJSONObject(i);
    Map<String, String> datum = new HashMap<String, String>(2);
    datum.put("code", record.getString("id") + " - " + record.getString("heading"));
    datum.put("description", record.getString("body"));
    spinneritems.add(datum);
    adapter.notifyDataSetChanged();
    spinner.setSelection(0);
}

它会导致发射

spinner.setOnItemSelectedListener(new OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) {    
                populateList(page);
            }

然后调用一个方法

final Spinner spinner = (Spinner)findViewById(R.id.comSpinner);
String spinnerItem = spinneritems.get(spinner.getSelectedItemPosition()).get("code");

第一次运行时一切正常,但是当我执行更改微调器内容的操作时,由于某种原因,最后的方法仍然会获取旧数据

最佳答案

解决了。在最初设置适配器之前,我执行以下操作

final Spinner spinner = (Spinner) findViewById(R.id.comSpinner);
spinneritems.clear();
adapter.notifyDataSetChanged();
spinner.setAdapter(adapter);

关于java - 微调器选择是更新微调器项目之前的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37548252/

相关文章:

android - 如何设置布局 :width of an object to (wrap_content + 10)?

java - Tomcat关闭时关闭SMTPAppender的线程池

android - 没有从 CustomAdapter 调用 getView

android - 如何在android中根据上面的imageview对齐textview

android - 无法升级到最新的支持库Android Studio

java - 从 android 服务器加载 gridView 中的图像

android - 无法在模拟器中运行的应用程序中运行谷歌地图

Java-netbeans : Cannot run program "${platforms. default_platform.home}\bin\java

java - Maven -DskipTests 被忽略

java - 让 ServerSocket 了解要监听哪些数据