我正在学习 android,对此了解不多,但显然节省资源很重要,所以我想知道设置背景颜色的一种做法是否明显优于另一种:
对我来说,在“onCreateViewHolder”中设置 View 的背景颜色是有意义的,如下所示:
@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只会在 View 中包含的每个对象上设置一次颜色,并且由于它们被回收,可能只会像例如10行(或每次回收 View 时都会重置吗?)。
@Override
public void onBindViewHolder(WordsHolder holder, int position) {
Words word = mWordList.get(position);
//STUFF
**holder.row.setBackgroundResource(colorID);**
}
这两个选项都效果很好,但我“应该”使用哪一个?
最佳答案
正如@Devsil所说,onCreateViewHolder()
用于常见的事情(例如,如果你的颜色是恒定的,应该在那里设置),onBindViewHolder()
用于事情行与行之间的差异。
原因是避免一遍又一遍地设置值(或查找View
,或创建某些内容)。 onCreateViewHolder()
仅在创建项目时调用,稍后调用 onBindViewHolder()
来设置具体值。但是,当稍后该项目被回收(重用)时,它不需要重新创建,并且只调用 onBindViewHolder()
,从而尽可能避免昂贵的操作。
关于java - 差异Recycleview : set color in CreateView or BindView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45942976/