【发布时间】:2013-03-04 23:27:52
【问题描述】:
我有一个ListView,其中包含有关歌曲的信息。另外我想给ListView添加封面图。
因此我写了一个适配器。这个适配器的主要内容是下面的getView() 方法:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
final Map dataSet = mData.get(position);
View v = convertView;
ViewHolder holder;
if (convertView == null) {
v = mInflater.inflate(mResource, parent, false);
holder = new ViewHolder();
holder.artist = (TextView) v.findViewById(R.id.artist);
holder.imageView = (ImageView) v.findViewById(R.id.imageListView);
holder.title = (ScrollingTextView) v.findViewById(R.id.title);
holder.time = (TextView) v.findViewById(R.id.time);
v.setTag(holder);
} else {
holder = (ViewHolder) v.getTag();
}
holder.artist.setText((CharSequence) dataSet.get("artist"));
holder.title.setText((CharSequence) dataSet.get("title"));
holder.time.setText((CharSequence) dataSet.get("time"));
GetImg gi = new GetImg(v, mContext);
gi.start();
return v;
}
您可以看到,我使用ViewHolder 以获得更好的性能。在扩展Thread 的GetImg 类中,我正在下载图像并将Bitmap 设置为ImageView。
现在我遇到了以下问题。有时,ListView 中的多个子视图会获得相同的图像。为什么?
当我不使用convertView 时,一切正常,但不如convertView 快。
【问题讨论】:
标签: android android-listview android-imageview android-image android-adapter