android中holder的基本信息

android中holder的基本信息,android,Android,我正在搜索android中holder的一些信息…因为我看到一些代码在gridview中使用checkbox时使用了它…但我找不到关于它的基本信息。如果有人能帮助我,我会很高兴的。 以下是使用holder的代码的一部分: public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder; if (convertView == null)

我正在搜索android中holder的一些信息…因为我看到一些代码在gridview中使用checkbox时使用了它…但我找不到关于它的基本信息。如果有人能帮助我,我会很高兴的。 以下是使用holder的代码的一部分:

public View getView(int position, View convertView, ViewGroup parent) {
            ViewHolder holder;
            if (convertView == null) {
                holder = new ViewHolder();
                convertView = mInflater.inflate(
                        R.layout.galleryitem, null);
                holder.imageview = (ImageView) convertView.findViewById(R.id.thumbImage);
                holder.checkbox = (CheckBox) convertView.findViewById(R.id.itemCheckBox);

                convertView.setTag(holder);
            }
            else {
                holder = (ViewHolder) convertView.getTag();
            }
            holder.checkbox.setId(position);
            holder.imageview.setId(position);

ViewHolder用于提高列表滚动的性能


下面是一条您可能感兴趣的信息。使用ViewHolder可以避免在每个getView方法中调用findViewById。在android中,listview使用convert view可以获得更好的性能,它将重复使用列表项视图,避免每次创建视图,视图保持器用于在转换视图中保持子视图引用。您可以深入查看listview源代码以了解详细信息,谢谢

在滚动listview期间,您的代码可能会频繁调用findViewById,这会降低性能。即使适配器返回一个膨胀视图进行循环,您仍然需要查找元素并更新它们。避免重复使用findViewById的一种方法是使用视图保持器设计模式

ViewHolder对象将每个零部件视图存储在布局的标记字段中,因此您无需重复查找即可立即访问它们

有关详细信息,请参阅ViewHolder可用于避免在所有通话中运行昂贵的通话。我指的是通过findViewById方法获得对要修改的每个对象的引用。根据布局本身的复杂性,在布局中搜索对象树的特定控件ID也可能是一项昂贵的任务

使用ViewHolder模式,我们可以保存对控件的引用,这样我们就不必再次搜索它们。在您的情况下,唯一的ViewHolder类将包含对我们必须处理布局的每个控件的引用:

static class ViewHolder {
    ImageView imageview;
    Checkbox checkbox;
}
我们将使用setTag保存带有tag属性中引用的holder,该属性在Android中的每个控件中显示,我们可以使用getTag获得它

这些链接可能对您有所帮助。 在滚动ListView期间,您的代码可能会频繁调用findViewById,这会降低性能。即使适配器返回一个膨胀视图进行循环,您仍然需要查找元素并更新它们。避免重复使用findViewById的一种方法是使用视图保持器设计模式

ViewHolder对象将每个零部件视图存储在布局的标记字段中,因此您无需重复查找即可立即访问它们