我正在学习android而且对此知之甚少,但显然节省资源很重要,所以我想知道设置背景颜色的做法是否明显优于另一种做法:
对我来说,在“onCreateViewHolder”的视图上设置背景颜色是有意义的,如下所示:
@Override
public WordsHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View inflatedView = LayoutInflater.from(parent.getContext())
.inflate(R.layout.list_view_layout,parent,false);
**inflatedView.setBackgroundResource(colorID);**
return new WordsHolder(inflatedView);
}
而不是在“onBindViewHolder”的每一行上设置它,但据我所知,android只会在视图中包含的每个对象上设置一次颜色,因为它们被回收,可能只有10行(或者每次回收视图时它都会重置吗?)。
@Override
public void onBindViewHolder(WordsHolder holder, int position) {
Words word = mWordList.get(position);
//STUFF
**holder.row.setBackgroundResource(colorID);**
}
这两个选项都运作良好,但我应该使用哪一个?
答案 0 :(得分:2)
正如@Devsil所说,onCreateViewHolder()
用于常见的事情(例如,如果你的颜色是常数,应该在那里设置),onBindViewHolder()
用于与行不同的事物。
原因是避免一遍又一遍地设置值(或找到View
或创建某些东西)。仅调用onCreateViewHolder()
来创建项目,稍后调用onBindViewHolder()
来设置特定值。但是当以后项目被回收(重用)时,不需要重新创建它,只调用onBindViewHolder()
,避免尽可能多的昂贵操作。