做了一个聊天转病历的项目,发送电子病历后,发现聊天者和对方的电子病历左右位置随意。开始以为是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了,
心酸啊,还是对代码熟悉啊。
版权声明:本文为博主原创文章,未经博主允许不得转载。
时间: 2024-10-13 14:41:47