100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > Android中ListView数据使用sAdapter.notifyDataSetChanged();方法不刷新的问题

Android中ListView数据使用sAdapter.notifyDataSetChanged();方法不刷新的问题

时间:2019-05-05 09:44:54

相关推荐

Android中ListView数据使用sAdapter.notifyDataSetChanged();方法不刷新的问题

原文链接:/caihongdao123/article/details/51513410 点击阅读原文

-------------------------

1.涉及到数据库

当要动态显示更数据库改动,相信大家应该都用过notifyDataSetChanged();.

例如:

......

private ArrayList<HashMap<String, Object>> usersList;

......

usersList= query(......); //根据查询函数获取一个ArrayList并赋值给绑定到Adapter的数据源usersList

sAdapter.notifyDataSetChanged();

上面这种形式去刷新ListView的数据的话, 是不可以更新的. 必须改成如下形式:

usersList.clear(); //先清空集合

usersList.addAll(query(......));

sAdapter.notifyDataSetChanged();

原因是:

Adapter在调用super(MyActivity.this, R.layout.item, usersList)时Adapter保存了指向原List的引用,在调用query函数之后,usersList指向了一个新的List。但是在调用notifyDataSetChanged()时,Adapter会跟据保存的引用去更新,因此当然还是原来的结果,不会进行更新。

2.布局xml中属性值的问题

当你布局中ListView的Android:layout_height="wrap_content"时,可能导致页面没有及时更新而出现数据不更新的问题只要将ListView的布局属性更改为android:layout_height="match_parent"即可。

3.其他问题可能就是数据或者List没有及时update里面的数据

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。