}
else{
viewHolder=(ViewHolder)convertView.getTag(); //通过getTag()方法获得附加信息
}
/**
* 这里对viewHolder中的各个控件进行相应的设置
*/
/**
* @author DragonGN
* 这里出现了一个问题:在绘制当前行的ListItem时,只需要对当前行的控件进行设置,因此这里不能加一个for
* 循环对每一个list中的每一个元素进行遍历,而应该根据当前创建的ListItem行的position,然后
* 访问数据库list中相应位置的Map的数据,进行控件的设置!
*/
/**
* 注意这里必须是setBackgroundDrawable() 而不是setBackground(),后者会报错,尽管前者过期了但一样可用
*/
viewHolder.ctPhoto.setBackgroundDrawable((Drawable)(list.get(position).get(from[0])));
//Map中要添加一个Drawable对象,这里的from和to中的元素应该一一对应,其顺序也应该对应ViewHolder构造方法中控件的调用的顺序
viewHolder.ctName.setText((String)(list.get(position).get(from[1])));
viewHolder.ctSign.setText((String)(list.get(position).get(from[2])));
viewHolder.ctPhoto.setOnClickListener(new ImageListener(position));
return convertView; //把这个每一行的View对象返回
}
}
最后就是MainActivity类了,与因为MyAdapter的封装方式与SimpleAdpter是一样额,因此这里MainActivity的操作基本不变。
复制代码
package com.example.android_qqlist;










