gpt4 book ai didi

java - 差异Recycleview : set color in CreateView or BindView

转载 作者:行者123 更新时间:2023-12-02 02:38:08 25 4
gpt4 key购买 nike

我正在学习 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com