Android 当数据大于1时,recyclerview仅更改1个图标(收藏夹图标)

Android 当数据大于1时,recyclerview仅更改1个图标(收藏夹图标),android,kotlin,android-recyclerview,Android,Kotlin,Android Recyclerview,我试图在本地数据库(sqlite)中加载“收藏夹”数据,并将其显示在recyclerview中的图标中 override fun onBindViewHolder(holder: MyViewHolder, position: Int) { val view = holder.itemView val favoriteData = DatabaseHelper(view.context).loadFavoriteData() //mutablelist favoriteD

我试图在本地数据库(sqlite)中加载“收藏夹”数据,并将其显示在recyclerview中的图标中

override fun onBindViewHolder(holder: MyViewHolder, position: Int) {
    val view = holder.itemView
    val favoriteData = DatabaseHelper(view.context).loadFavoriteData() //mutablelist
    favoriteData.forEach {
        view.toggle_favorite.isChecked = data.results[position].id.toString() == it.id
    }
}
但当我运行它时,只有一个图标会更改(切换/打开),而我的收藏夹数据不止一个,只有阵列中的最后一个数据会显示在收藏夹图标中,如:

mutableListOf(.., .., .., "only the latest data is taken") 
所以请帮帮我,谢谢

如果你需要完整的代码,你可以在这里找到

试试这个:

override fun onBindViewHolder(holder: MyViewHolder, position: Int) {
    val view = holder.itemView
    val favoriteData = DatabaseHelper(view.context).loadFavoriteData() 
    val favorite = favoriteData.find { data.results[position].id.toString() == it.id }
    view.toggle_favorite.isChecked = (favorite != null)

}
试试这个:

override fun onBindViewHolder(holder: MyViewHolder, position: Int) {
    val view = holder.itemView
    val favoriteData = DatabaseHelper(view.context).loadFavoriteData() 
    val favorite = favoriteData.find { data.results[position].id.toString() == it.id }
    view.toggle_favorite.isChecked = (favorite != null)

}

@RizkiRakasiwi如果我帮助了你,请在我的答案上打勾并投票表决我的答案:)@RizkiRakasiwi如果我帮助了你,请在我的答案上打勾并投票表决我的答案:)