19-视图持有者

558 阅读2分钟

视图持有者的概念

视图持有者模式的核心思想是:

  • 缓存视图:将列表项的视图组件缓存起来,以避免每次绑定数据时都重复调用 findViewById
  • 提高性能:减少视图查找的次数,从而提高滚动性能。

视图持有者的作用

视图持有者的主要作用是缓存视图组件,以便在数据绑定时快速访问这些组件,而不需要每次都调用 findViewById 方法。这样可以显著提高性能,特别是在列表视图或轮播图中频繁更新视图的场景中。

视图持有者类的结构

class VehicleInfoHolder extends RecyclerView.ViewHolder {
    TextView tvMileage, tvRemainingMileage, tvBatteryStatus;
    ImageView ivVehicleImage;

    public VehicleInfoHolder(View view) {
        super(view);
        // 初始化视图持有者中的视图组件
        tvMileage = view.findViewById(R.id.tv_mileage);
        ivVehicleImage = view.findViewById(R.id.iv_vehicle_image);
        tvRemainingMileage = view.findViewById(R.id.tv_remaining_mileage);
        tvBatteryStatus = view.findViewById(R.id.tv_battery_status);
    }
}

详细解释

  1. 类声明
class VehicleInfoHolder extends RecyclerView.ViewHolder {
  • VehicleInfoHolder:这是一个内部类,继承自 RecyclerView.ViewHolder
  • RecyclerView.ViewHolder:这是一个持有视图的基类,为 RecyclerView 提供缓存机制。
  1. 成员变量
TextView tvMileage, tvRemainingMileage, tvBatteryStatus;
ImageView ivVehicleImage;
  • TextView tvMileage:用于显示行驶公里数的文本视图。
  • TextView tvRemainingMileage:用于显示距离下次保养剩余公里数的文本视图。
  • TextView tvBatteryStatus:用于显示电池状态的文本视图。
  • ImageView ivVehicleImage:用于显示车辆图片的图像视图。
  1. 构造方法
public VehicleInfoHolder(View view) {
    super(view);
    // 初始化视图持有者中的视图组件
    tvMileage = view.findViewById(R.id.tv_mileage);
    ivVehicleImage = view.findViewById(R.id.iv_vehicle_image);
    tvRemainingMileage = view.findViewById(R.id.tv_remaining_mileage);
    tvBatteryStatus = view.findViewById(R.id.tv_battery_status);
}
  • VehicleInfoHolder(View view):构造方法,接受一个 View 对象作为参数。
  • super(view):调用父类 RecyclerView.ViewHolder 的构造方法,将视图传递给它。

总结

  • 视图持有者模式:通过缓存视图组件,减少 findViewById 调用,提高性能。
  • VehicleInfoHolder:持有视图组件,并在构造方法中初始化这些组件。
  • 数据绑定:在 onBindView 方法中使用视图持有者,将数据绑定到视图组件。