【发布时间】:2012-11-11 02:17:46
【问题描述】:
我只是想更好地理解我经常用来优化的以下模式ListView
我的阅读只指出静态内部类被视为顶级类的事实。与成员类(非静态)相比,这样的事情有什么好处?
@Override
public View getView(int position, View convertView, ViewGroup parent) {
Comment comment = getItem(position);
ViewHolder holder;
if (convertView == null){
holder = new ViewHolder();
convertView = LayoutInflater.from(context).inflate(R.layout.mylayout, null);
holder.nickname = (TextView) ((ViewGroup) convertView).findViewById(R.id.nickname);
convertView.setTag(holder);
}else{
holder = (ViewHolder) convertView.getTag();
}
holder.nickname.setText(comment.getMember_nickname());
CharSequence
return convertView;
}
public static class ViewHolder{
TextView nickname;
}
【问题讨论】:
-
因为如果不是,则类链接到实例,这是完全没有必要的。
-
@njzk2:有什么缺点?
-
@Jan1337z 缺点是,如果 ViewHolder 不是静态的,您的适配器的每个实例都有一个类对象的实例。
-
@njzk2:那是浪费内存——仅此而已?
-
@Jan1337z 浪费了内存和设置时间来创建类实例并销毁它。在这种特殊情况下,我认为仅此而已,内部类的其他情况还有其他缺点。
标签: java android android-viewholder