private static 的优点 adapter里使用ViewHolder 模式优化就是个很好的例子
时间: 2024-10-08 08:26:31 浏览: 37
`private static` 关键字在 Java 中有以下几个优点:
1. **内存节省**:静态成员变量存储在方法区(Class Space),而不是每个实例对象上。对于像 ViewHolder 这样的模式,在Android RecyclerView 的适配器中,ViewHolder 需要复用,如果每次创建都是实例级别的,会浪费大量内存。通过将其声明为 `static`,可以在列表刷新时重用单个对象,避免了频繁地创建和销毁。
2. **提高性能**:因为静态变量只初始化一次,所以在适配器的构造函数外定义 ViewHolder,可以减少对象创建开销,特别是当列表数据量大时,能显著提升整体的性能。
3. **代码简洁清晰**:`private static` 使得 ViewHolder 变得更加轻量级,专注于处理布局管理,减少了对外部状态的依赖,提高了代码结构的整洁度。
Adapter 中使用 ViewHolder 的示例优化:
```java
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {
private List<Item> items;
// 使用 ViewHolder 类型
public static class ViewHolder extends RecyclerView.ViewHolder {
public TextView textView;
public ImageView imageView;
public ViewHolder(View itemView) {
super(itemView);
textView = itemView.findViewById(R.id.text_view);
imageView = itemView.findViewById(R.id.image_view);
}
}
// ...
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View itemView = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_layout, parent, false);
return new ViewHolder(itemView);
}
// ...
}
```
在这个例子中,ViewHolder 作为私有的静态内部类,只会在首次从布局文件中 inflate 视图时创建一个,后续对列表的遍历可以直接复用这个ViewHolder,提高了效率。
阅读全文