java - 我的 adapter.notifyDataSetChanged() 不工作

标签 java android android-arrayadapter

如何用我的新数组更新 ArrayAdapter?

Belwo 是我的 ArrayAdapter 添加了一个默认数组。

String[] array_spinner = new String[]{"Select your state."};
ArrayAdapter<String> adapter = new ArrayAdapter<String> (this,android.R.layout.simple_spinner_item,array_spinner);
adapter.setDropDownViewResource(R.layout.state_spinner_layout);
Myspinner.setAdapter(adapter);

现在我将一些解析信息的 JSON 数据加载到 array_spinner_data 中,我想调用 notifyDataSetChanged()

array_spinner = new String[]jsonArray.length(); 


        for (int i=0; i<jsonArray.length(); i++)
        {   
            String styleValue = jsonArray.getJSONArray(i).getString(0);    
            Log.d(TAG, styleValue);
            array_spinner[i] = styleValue;

        }
        Log.d(TAG, String.valueOf(array_spinner.length));
        adapter.notifyDataSetChanged();

我没有看到任何错误,我的所有 Log.d 都按预期返回。但是当我点击我的微调器时,所有显示的都是原始的 Select your state 我遗漏了一些基本的 onCreate 和 Json 加载内容,但如果有人需要查看它,请告诉我。

最佳答案

notifyDataSetChanged是“不工作”因为你没有改变数据集,你正在创建一个新的副本,一个适配器不知道的。使用 List<>而不是数组,并修改 that 您传递给适配器的相同列表对象,它将起作用。如果您想保留当前代码,则必须在新数据集上创建一个新适配器并将其应用于您的微调器。

关于java - 我的 adapter.notifyDataSetChanged() 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7459701/

相关文章:

java - Android:快速滚动 ListView getPositionForSection 的奇怪行为

Java:WeakReference.get() 不返回 null

java - 针对 "Java 8"JDK 编写的程序是否与 "Java 7"JRE 兼容?

Android协程作业更改为CompletableJob?

android 二维位图绘制

android - 如何从服务器查看 mp3 文件的 ListView

android - 如何使用 ArrayAdapter 显示 ListView ?

java - Android socket原理及异常

java - 使用 Spring OSGi 时,BundleActivator 无法解析为类型

android - 在隐藏密码字符之前先显示一段时间