android中holder的基本信息
我正在搜索android中holder的一些信息…因为我看到一些代码在gridview中使用checkbox时使用了它…但我找不到关于它的基本信息。如果有人能帮助我,我会很高兴的。 以下是使用holder的代码的一部分:android中holder的基本信息,android,Android,我正在搜索android中holder的一些信息…因为我看到一些代码在gridview中使用checkbox时使用了它…但我找不到关于它的基本信息。如果有人能帮助我,我会很高兴的。 以下是使用holder的代码的一部分: public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder; if (convertView == null)
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对象将每个零部件视图存储在布局的标记字段中,因此您无需重复查找即可立即访问它们