Open chengzhijun0706 opened 7 years ago
问题解决了,但是有些不明白,解决的方法是讲原来的notifyItemChanged(position);替换为notifyDataSetChanged();就可以了
首先,你不能直接操作Adapter的数据。所以getAllData().SetXXXX
是完全无意义的操作。
另外,你修改了info的数据,你notifyItemChanged(position)
是正确的,但你的position要加上header的数量,所以并不建议使用notifyItemChanged
。
建议使用adapter.update(info,position)
。专门用于处理单个数据更新的情况。
如果有一个item中的点击事件需要去改变info的数据(类似于点赞的情况),这样的需求如何去最优的处理方式呢
...上面不都说了建议
那按照最合理的方式,在viewholder中进行点击事件的处理,意思是在viewholder中获取adapter的实例进行update方法是么?
前面是针对你们常在viewholder外部写item监听器的写法。。我是一般都不这么写。 本来也建议在viewholder内部setdata里写监听,监听里直接修改info数据且修改view。耦合度低,效率也较高(因为你notifyitemchange会重新设置item的所有view,这样只会修改需要变动的view)。岂不美哉。 方式很多。别被这些封装逻辑搞晕了...本质就是修改view同时注意下recyclerview回收机制与ArrayAdapter数据管理。怎么写都好。
我在adapter中设置了item中的一个imageview的点击事件,但是当我添加headview后,点击事件还可以响应,但是界面却不刷新了