0
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

}

}

It's my first time learning Android Studio and Kotlin, Above is the second activity DetailActivity.kt, in the section I will display an image (imgAvatar.setImageresource(users)), an error appears I use arraylist and parcelable to send data sets in the form of images and text "Type missmatch Required: Int Found: kotlin.collection. ArrayList "

and here's the code for 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)
}

}

Ferdi
  • 1

1 Answers1

0

Firstly, please check the android documentations about imageview setImageResource

It only accepts a single resource integer. i.e. you can give image sources such as

setImageResource(R.drawable.yourImage)

R.drawable.yourImage actually is an int. That is why exception says you that it expects int however found list.

Y.Kakdas
  • 833
  • 7
  • 17