关于adapter中getView()的复用
我现在在做一个聊天软件,这两天遇到个纠结的问题,我的聊天页面是一个ListView,item布局是左右的那种,来消息是在左边,type为2,发出在右边,type为1,如果不复用convertView就时不时的出现OOM,可是现在代码如下,麻烦各位看看是不是我的方法有问题,我在geView的时候有时候可能即使type为1却显示在左边,下面贴出主要的getView代码,中间省略了一些资源设置:
public View getView(int position, View convertView, ViewGroup parent){
MessageBean mb = mbList.get(position);
ViewHolder holder = null;
View convertView1,convertView2;
if(mb.getType().equalsIgnoreCase("1")){
convertView1 = convertView;
if(convertView1 == null){
convertView1 = vi.inflate(R.layout.list_say_me_item, null);
holder=new ViewHolder();
holder.tvTime = (TextView) convertView1.findViewById(R.id.tv_sendtime);
holder.tvText = (TextView) convertView1.findViewById(R.id.messagedetail_row_text);
holder.layout = (LinearLayout) convertView1.findViewById(R.id.layout_bj);
convertView1.setTag(holder);
}else{
holder = (ViewHolder) convertView1.getTag();
}
convertView = convertView1;
}else if(mb.getType().equalsIgnoreCase("2")){
convertView2 = convertView;
if(convertView2 == null){
convertView2 = vi.inflate(R.layout.list_say_he_item, null);
holder = new ViewHolder();
holder.tvTime = (TextView) convertView2.findViewById(R.id.tv_sendtime);
holder.tvText = (TextView) convertView2.findViewById(R.id.messagedetail_row_text);
holder.layout = (LinearLayout) convertView2.findViewById(R.id.layout_bj);
convertView2.setTag(holder);
}else{
holder = (ViewHolder) convertView2.getTag();
}
convertView = convertView2;
}
return convertView;
}
...全文
相关推荐
android listview控件复用问题解决
andorid listview由于复用控件的问题,再布局上使用checkbox时会造成选中状态错乱的问题,该项目可以解决该问题
带编辑框复选框解决了复用问题的listview
带编辑框复选框解决了复用问题的listview
5-ListView-SimpleAdapter及自定义Adapter-进阶2.rar
自定义适配器 和 SimpleAdater 配合listView使用 ,将数据展示在列表中 进阶2
Android ListView adapter不同布局
Android ListView adapter不同布局,当需要用到ListView叠加嵌套时候可以考虑
万能Adapter
通用Adapter,值得学习,简单容易看懂


