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

标签 java android android-recyclerview

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

相关文章:

java - jPopUpMenu 更改鼠标悬停背景

android - Android中SlidingDrawer打开百分比

android - 向下滚动时,recyclerview 中的嵌套 ScrollView 不会触发 onscrolllistener

android - 使用MVVM在RecyclerView的网格和线性之间切换的更好方法是什么?

java - 下载图像时 BitmapFactory.decodeStream 返回空值

java - 在 HashSet 中搜索字符串数组中的任意元素

java - 在抽象类中实现时降低 java 接口(interface)的可见性

android - 使用 SAS(共享访问签名)通过 Azure 存储上传文件

java - 配对蓝牙设备时出现 NullPointerException

android - 更改 RecyclerView 项目的项目背景