adapter.notifyDataSetChanged()不起作用

原创 2015年07月09日 10:58:04
</pre><pre name="code" class="java">ArrayAdapter<String> adapter;
private List<String> list = new ArrayList<String>();
// ......
        list.add("1");
        list.add("1");
        list.add("1");
        list.add("1");
        list.add("1");
        list.add("1");
        adapter = new ArrayAdapter<String>(mCtx, android.R.layout.simple_list_item_1, list);
        listView.setAdapter(adapter);

//-------------------------------
@Override
    public void onClick(View v) {
<span style="white-space:pre">	</span>List<String> tmp = new ArrayList<>();
<span style="white-space:pre">	</span>tmp.add("A");
<span style="white-space:pre">	</span>tmp.add("A");
<span style="white-space:pre">	</span>tmp.add("A");
<span style="white-space:pre">	</span>tmp.add("A");
<span style="white-space:pre">	</span>tmp.add("A");
<span style="white-space:pre">	</span>list = tmp;
<span style="white-space:pre">	</span>adapter.notifyDataSetChanged();
}
这里点击事件触发的实际并不能实现数据的刷新,原因是
private List<T> mObjects;
<pre name="code" class="java">public ArrayAdapter(Context context, int resource, List<T> objects) {
        init(context, resource, 0, objects);
    }

private void init(Context context, int resource, int textViewResourceId, List<T> objects) {
        mContext = context;
        mInflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        mResource = mDropDownResource = resource;
        mObjects = objects;
        mFieldId = textViewResourceId;
    }
可以看到这里仅仅是做了一个引用。上面list = tmp;做法将变量list重新指向了一块新的内存。

而adapter里面mObjects指向的还是原来的那块数据。adapter里面的数据并发生改变。
可以使用list.addAll(tmp);这样子就可以刷新数据了。

相关文章推荐

Android 解决 adapter.notifyDataSetChanged() 不起作用

转载请注明出处:使用 Listview 的时候,给 adapter 的数据源 List 添加了新的数据,然后调用 adapter.notifyDataSetChanged(),发现 listview ...

自定义adapter 改变数据后调用notifyDataSetChanged() 不起作用的解决方法

1.问题描述:         ListView填充的数据改变时需要及时刷新页面,正常来讲我们只需要调用 adapter.notifyDataSetChanged();  方法就可以了,系统使用观...
  • dxswzj
  • dxswzj
  • 2013年10月31日 22:10
  • 3489

FragmentActivity 进行重新加载item对象不起作用 notifyDataSetChanged 也不行

FragmentActivity中 进行重新加载item对象不起作用 重新初始化Adapter对象不行 notifyDataSetChanged 也不行 在定义的 Adapter对象中添加一个方法  ...

FragmentPagerAdapter.notifyDataSetChanged() 不起作用

在一个 Android 应用中,我使用 FragmentPagerAdapter 来处理多 Fragment 页面的横向滑动。不过我碰到了一个问题,即当 Fragment 对应的数据集发生改变时,...

电脑图标不起作用故障处理大全

  • 2016年01月08日 19:49
  • 32.53MB
  • 下载

jsp中EL表达式不起作用的问题

SpringMVC过程中出现异常,开发环境如下: 开发工具:IDEA JDK:1.8.0_65 Spring Version:4.2.4 Servlet Version:3.1.0 ...

MyEclipse断点不起作用.doc

  • 2012年12月10日 20:51
  • 57KB
  • 下载

fflush(stdin)在gcc编译器中不起作用?

====================================================================================================...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:adapter.notifyDataSetChanged()不起作用
举报原因:
原因补充:

(最多只允许输入30个字)