ExpandableText
ExpandableText copied to clipboard
调用mAdapter.notifyDataSetChanged()方法新数据后,状态未变
当刷新数据,数据源改变后,调用mAdapter.notifyDataSetChanged()方法,此时adapter中SparseArray<Integer> mTextStateList中记录的数据并未发生改变,然后执行判断时,如果刷新前position位置上的状态是什么样的,现在改position位置上的状态就是什么样的,造成显示不正确。
我的解决办法是,在adapter中写一个方法
public void clearStateList(){ mTextStateList.clear(); }
然后在调用mAdapter.notifyDataSetChanged()之前,调用这个方法,先清除状态值。
如果有更好的解决办法,欢迎交流,谢谢!
当初只是写一个demo,没有考虑太多,真是抱歉。
已经把相关代码抽出到BaseAdapter
并修改储存state的key为用户自定义的唯一标示ID(之前是position)。
增加了你提出的clearStateList()
方法,是个很好的建议,应对列表数据可能的动态变化。
@xiaxiayang
给了很大的帮助,谢谢
当初只是写一个demo,没有考虑太多,真是抱歉。 已经把相关代码抽出到
BaseAdapter
并修改储存state的key为用户自定义的唯一标示ID(之前是position)。 增加了你提出的clearStateList()
方法,是个很好的建议,应对列表数据可能的动态变化。 @xiaxiayang
增加这个方法是可以正常展示了,但是如果更新item内容,比如我的item里有点赞按钮,需要刷新按钮状态,这时候调用notifyDataSetChanged屏幕就会闪烁,因为每次记录的状态都被清空了,这种情况怎么解决呢?