关于adapter中getView()的复用

z_涯 z_涯 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
我现在在做一个聊天软件,这两天遇到个纠结的问题,我的聊天页面是一个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;
}
...全文
评论 10
收藏 已收藏
分享
返回顶部
z_涯
Android 80,490 成员 91,375 内容