首页 > 其他 > 详细

特别注意adapter的view的复用

时间:2015-08-15 16:35:47      阅读:218      评论:0      收藏:0      [点我收藏+]

做了一个聊天转病历的项目,发送电子病历后,发现聊天者和对方的电子病历左右位置随意。开始以为是iscomeMsg的这个开关搞反了,造成了电子病历左右随意。后来发现不是;接着以为是更新xlistView的方法有问题,从数据库读取会删除isComeMsg的这个标签,发现还是一样,没有变化。

  正纳闷时,想起了adapter中有一个getView的方法,会不会是view的复用。去查看,原来真的是这样。

本来是这样写的,

private View createViewIfNull(View conView, AVIMTypedMessage msg,
 
  if (conView == null) {
   
   conView = createView(msg, isComMsg);
  }

  return conView;
 }

这样的话,就会复用了view,已发送电子病历就会复用上一个view的位置,这样就出现电子病历的位置随意。

应该禁止复用的功能,改为以下。

private View createViewIfNull(View conView, AVIMTypedMessage msg,
   boolean isComMsg) {
  if(conView !=null) conView = null;
  if (conView == null) {
   
   conView = createView(msg, isComMsg);
  }

  return conView;
 }

这样就ok了,


心酸啊,还是对代码熟悉啊。



版权声明:本文为博主原创文章,未经博主允许不得转载。

特别注意adapter的view的复用

原文:http://blog.csdn.net/liqiuguo/article/details/47682359

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!