简体   繁体   English

我的adapter.notifyDataSetChanged()不起作用

[英]My adapter.notifyDataSetChanged() is not working

How to update an ArrayAdapter with my new array? 如何使用我的新阵列更新ArrayAdapter?

Belwo is my ArrayAdapter with a default array added to it. 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);

Now I load some JSON data that parses the info into the array_spinner_data and I want to call notifyDataSetChanged() 现在我加载一些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();

I am not seeing any errors and all of my Log.d are coming back as they should. 我没有看到任何错误,我的所有Log.d都应该回来了。 But when I click my spinner all that is showing is the original Select your state I left out some of the basic onCreate and Json load stuff but if anyone needs to see it just let me know. 但是当我点击我的微调器时,所有显示的都是原始的Select your state我遗漏了一些基本的onCreate和Json加载的东西,但如果有人需要看到它只是让我知道。

notifyDataSetChanged is "not working" because you are not changing the data set, you are creating a new copy, one that the adapter has no knowledge about. notifyDataSetChanged “无法正常工作”,因为您没有更改数据集,而是创建了一个新的副本,即适配器不知道的副本。 Use a List<> instead of an array, and modify that same list object that you passed to your adapter and it will work. 使用List<>而不是一个数组,并修改您传递给你的适配器相同的列表对象,它会工作。 If you want to keep your current code, then you have to create a new adapter over the new data set and apply it to your spinner. 如果要保留当前代码,则必须在新数据集上创建新适配器并将其应用于微调器。

don't create a new list, clear the existing list then call notifydatasetchanged 不要创建新列表,清除现有列表然后调用notifydatasetchanged

someArrayList.clear();
someArrayList.add("element 1");
someArrayList.add("element 2");
yourAdapter.notifyDataSetChanged();
  • First create a list 首先创建一个列表
  • Before reload the list every time with new value you have to clear the existing valuea 在每次使用新值重新加载列表之前,您必须清除现有值
  • At last use your DataAdapter.notifyDatachanged(). 最后使用您的DataAdapter.notifyDatachanged()。 function 功能

     private Spinner spinnerTest; ArrayList<String> list_spinnerTest = new ArrayList<String>(); list_spinnerTest.clear(); String[] NameArray=new String []{"Load From Array","bbbbbbbb","cccccccccc","ddddddddd","eeeeeeeeee"}; int count=5; for (int i = 0; i < count; i++) { list_spinnerTest.add(NameArray[i]); } ArrayAdapter<String> dataAdapterSpinner=new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item,list_spinnerTest); dataAdapterSpinner.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); spinnerTest.setAdapter(dataAdapterSpinner); dataAdapterSpinner.notifyDataSetChanged(); 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 Adapter.notifyDataSetChanged()在onCreate()中不起作用 - Adapter.notifyDataSetChanged() not working inside onCreate() 取消adapter.notifyDataSetChanged - Cancel adapter.notifyDataSetChanged 使用adapter.notifyDataSetChanged()更新RecyclerView - Updating RecyclerView with adapter.notifyDataSetChanged() 从另一个线程调用adapter.notifyDataSetChanged() - Call adapter.notifyDataSetChanged() from another thread adapter.notifyDatasetChanged()无需更改当前视图 - adapter.notifyDatasetChanged() without changing current view adapter.notifyDataSetChanged 不刷新回收站视图 - adapter.notifyDataSetChanged does not refreshing the recycler view adapter.notifyDataSetChanged() 不跨类更新 UI - adapter.notifyDataSetChanged() not updating UI across classes Android RecyclerView 未在 adapter.notifyDataSetChanged 上刷新 - Android RecyclerView not refreshing on adapter.notifyDataSetChanged 如何使用adapter.notifyDataSetChanged(); 我必须在这些行中使用我的错误 - How to use adapter.notifyDataSetChanged(); where i have to use these line for my error Android:adapter.registerDataSetObserver与adapter.notifyDatasetChanged - Android: adapter.registerDataSetObserver vs adapter.notifyDatasetChanged
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM