在下面的代码中,当我调用holder.imgAvatar.setImageResource(avatar)
时,它说我的变量(avatar
)是String
,即使我已经在数据类中将其设置为Int
。
为什么会这样?
ListUserAdapter.kt
class ListUserAdapter(val listUser: ArrayList<User>) {
// ...
fun someMethod() {
val (name, username, avatar) = listUser[position]
holder.imgAvatar.setImageResource(avatar)
holder.tvName.text = name
holder.tvUserName.text = username
User.kt
@Parcelize
data class User(
var username: String,
var name: String,
var location: String,
var company: String,
var repository: String,
var followers: String,
var following: String,
var avatar:Int,
):Parcelable
1条答案
按热度按时间n3ipq98p1#
解构声明不是基于变量名,而是基于对
data class
的componentN()
方法的后续调用。我的意思是你的代码:
并不意味着:
但这意味着:
其可以理解为:
因此,
avatar
的值从listUser[position]
获得location
的值。你应该从列表中获取你需要的
User
的引用,并基本上自己分配值。或者你可以改变User
data class
的值的顺序。您可以阅读 * 解构声明 * 更多here。