特别注意adapter的view的复用

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

特别注意adapter的view的复用的相关文章

Android-ListView-Adapter view无复用

ListView设置适配器,加载Item视图 方法: lvList.setAdapter(new MenuAdapter()); MenuAdapter类具体实现如下: 1 class MenuAdapter extends BaseAdapter { 2 3 @Overrride 4 public int getCount(){ 5 reutrn mMenuList.size(); 6 } 7 8 @Override 9 public NewsMenuData getItem(int posi

ViewPager中View的复用

代码例如以下: public class MyViewPagerAdapter extends PagerAdapter { //显示的数据 private List<DataBean> datas = null; private LinkedList<View> mViewCache = null; private Context mContext ; private LayoutInflater mLayoutInflater = null; public MyViewPage

Adapter数据变化改变现有View的实现原理及案例

首先说说Adapter具体的类的继承关系,如下图 Adapte为接口它的实现类的对象作为AdapterView和View的桥梁,Adapter是装载了View(比如ListView和girdView要显示的数据).相关View要显示的数据完全与View解耦.View要显示的数据从Adapter里面获取并展现出来:Adapter负责把真实的数据是配成一个个View(每一条数据对应一个View)让GirdView等类似的组件来显示这些是配好的一个个View,.也就是说View要显示什么数据取决于Ad

Adapter优化方案的探索

概要:使用Adapter的注意事项与优化方案本文的例子都可以在结尾处的示例代码连接中看到并下载,如果喜欢请star,如果觉得有纰漏请提交issue,如果你有更好的点子可以提交pull request.本文的示例代码主要是基于CommonAdapter这个库编写的,若你有其他的技巧和方法可以参与进来一起完善这篇文章.固定连接:https://github.com/tianzhijiexian/Android-Best-Practices/blob/master/2015.10/adapter/ad

ListView中不同类型view的实现

首先创建请求队列,一个活动中只需要一个,因此放在Application中: public class MyApplication extends Application{ private static RequestQueue requestQueue; @Override public void onCreate() { super.onCreate(); requestQueue = Volley.newRequestQueue(getApplicationContext()); } pub

Android之Adapter用法总结

http://blog.csdn.net/fznpcy/article/details/8658155 Android之Adapter用法总结 1.概念 Adapter是连接后端数据和前端显示的适配器接口,是数据和UI(View)之间一个重要的纽带.在常见的View(List View,Grid View)等地方都需要用到Adapter.如下图直观的表达了Data.Adapter.View三者的关系: Android中所有的Adapter一览: 由图可以看到在Android中与Adapter有关

Android之Adapter用法总结(转)

Android之Adapter用法总结 1.概念 Adapter是连接后端数据和前端显示的适配器接口,是数据和UI(View)之间一个重要的纽带.在常见的View(List View,Grid View)等地方都需要用到Adapter.如下图直观的表达了Data.Adapter.View三者的关系: Android中所有的Adapter一览: 由图可以看到在Android中与Adapter有关的所有接口.类的完整层级图.在我们使用过程中可以根据自己的需求实现接口或者继承类进行一定的扩展.比较常用

Android Adapter详解

Android Adapter Adapter是用来帮助填充数据的中间桥梁,比如通过它将数据填充到ListView, GridView, Gallery.而android 提供了几种Adapter:ArrayAdapter, BaseAdapter, CursorAdapter, HeaderViewListAdapter, ListAdapter, ResourceCursorAdapter, SimpleAdapter, SimpleCursorAdapter, SpinnerAdapter

(转)Android之Adapter用法总结

1.概念 Adapter是连接后端数据和前端显示的适配器接口,是数据和UI(View)之间一个重要的纽带.在常见的View(ListView,GridView)等地方都需要用到Adapter.如下图直观的表达了Data.Adapter.View三者的关系: Android中所有的Adapter一览: 由图可以看到在Android中与Adapter有关的所有接口.类的完整层级图.在我们使用过程中可以根据自己的需求实现接口或者继承类进行一定的扩展.比较常用的有 BaseAdapter,SimpleA