码迷,mamicode.com
首页 > 其他好文 > 详细

特别注意adapter的view的复用

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

标签:android

做了一个聊天转病历的项目,发送电子病历后,发现聊天者和对方的电子病历左右位置随意。开始以为是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的复用

标签:android

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!