android listview 复用viewholder举例
时间: 2024-09-20 18:15:28 浏览: 24
在Android中,ListView是一个常见的用于显示列表数据的组件。为了提高性能并减少内存消耗,ListView使用了View Holder设计模式。View Holder的作用是在每个ListItem不再需要时复用其视图,而不是每次滚动时都创建新的View。
举个例子,假设我们有一个简单的Adapter,它负责将List<YourItem>的数据填充到ListView:
```java
public class YourListAdapter extends ArrayAdapter<YourItem> {
private ViewHolder viewHolder;
public static class ViewHolder {
TextView textViewName;
ImageView imageViewIcon;
// 其他可能的视图...
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
viewHolder = new ViewHolder();
convertView = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_list_view, parent, false);
viewHolder.textViewName = convertView.findViewById(R.id.text_view_name);
viewHolder.imageViewIcon = convertView.findViewById(R.id.image_view_icon);
// 绑定ViewHolder
convertView.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) convertView.getTag();
}
YourItem item = getItem(position);
viewHolder.textViewName.setText(item.getName());
viewHolder.imageViewIcon.setImageResource(item.getIconResourceId());
return convertView;
}
}
```
在这个例子中,当列表滚动时,如果`convertView`(已经缓存的视图)不是null,我们就直接复用它;如果`convertView`是null,我们就新创建一个,并将其放入缓存。这样可以显著减少垃圾回收的工作量,提升应用程序的响应速度。