微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何以使用arraylist和parcelable发送的意图过程中的图像形式显示数据?

如何解决如何以使用arraylist和parcelable发送的意图过程中的图像形式显示数据?

class DetailActivity : AppCompatActivity() {

companion object {
    const val EXTRA_USER = "extra_user"
}
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_detail)

    val imgAvatar:CircleImageView = findViewById(R.id.img_dtlavtr)
    val txtName:TextView = findViewById(R.id.txt_names)
    val txtUname:TextView = findViewById(R.id.txt_uname)

    val users = intent.getParcelableArrayListExtra<User>(EXTRA_USER) as ArrayList<User>
    imgAvatar.setimageResource(users)
    txtName.text
    txtUname.text

}

}

这是我第一次学习 Android Studio 和 Kotlin, 上面是第二个Activity DetailActivity.kt,在我会显示图片的部分(imgAvatar.setimageresource(users)),出现错误 我使用arraylist和parcelable以图像和文本的形式发送数据集 "类型不匹配 必需:整数 找到:kotlin.collection。数组列表“

这里是 MainActivity.kt 的代码

class MainActivity : AppCompatActivity() {

private lateinit var adapter: UserAdapter
private lateinit var dataname: Array<String>
private lateinit var dataUname: Array<String>
private lateinit var dataAvatar: TypedArray
private var users = arraylistof<User>()

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)

    val listView: ListView = findViewById(R.id.lv_list)
    adapter = UserAdapter(this)
    listView.adapter = adapter

    prepare()
    addItem()

    listView.onItemClickListener = AdapterView.OnItemClickListener {
        _,_,position,_ ->
        //Toast.makeText(this@MainActivity,users[position].name,Toast.LENGTH_SHORT).show()
        val detailIntent = Intent(this@MainActivity,DetailActivity::class.java)
        detailIntent.putParcelableArrayListExtra(EXTRA_USER,users)
        startActivity(detailIntent)
    }
}

private fun addItem() {
    for (position in dataname.indices) {
        val user = User(
            dataAvatar.getResourceId(position,-1),dataname[position],dataUname[position]
        )
        users.add(user)
    }
    adapter.users = users
}

private fun prepare() {
    dataname = resources.getStringArray(R.array.name)
    dataUname = resources.getStringArray(R.array.username)
    dataAvatar = resources.obtainTypedArray(R.array.avatar)
}

}

解决方法

首先,请查看关于 imageview setImageResource

的 android 文档

它只接受单个资源整数。即您可以提供图像源,例如

setImageResource(R.drawable.yourImage)

R.drawable.yourImage 实际上是一个整数。这就是为什么异常告诉你它期望 int 但是找到列表。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。