Set image of two seperate imageviews

Viewed 42

I have two imageViews in my app and I have two buttons. Each Button will change one of the ImageViews with a Gallery Picker.

However I don't know how to choose the image for each of the imageViews seperatly.

Picture of the UI

    lateinit var frontImageView: ImageView
    lateinit var backImageView: ImageView

    private val pickImage = 100
    private var imageUri: Uri? = null
...
   override fun onCreate(savedInstanceState: Bundle?) {
        frontImageView = findViewById(R.id.cb_image_frontside)
        backImageView = findViewById(R.id.cb_image_backside)

}


    override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
        super.onActivityResult(requestCode, resultCode, data)
        if (resultCode == RESULT_OK && requestCode == pickImage) {
            imageUri = data?.data

            frontImageView.setImageURI(imageUri) // This will just change the image for "frontImageView"
                                                 // But I can only always have one of the 
                                                 // imageViews changed at one time 

                                                 // How can I change the Image of "backImageView" with 
                                                 // the other button?
        }
    }
// This is the fuction for the buttons 
    fun pickMedia(view: View) {
        val gallery = Intent(Intent.ACTION_PICK, MediaStore.Images.Media.INTERNAL_CONTENT_URI)
        startActivityForResult(gallery, pickImage)
    }
1 Answers

Based on your code above you can try something like this:

    lateinit var frontImageView: ImageView
    lateinit var backImageView: ImageView

    lateinit var frontButton: AppCompatButton
    lateinit var backButton: AppCompatButton

    private val pickFrontImage = 100
    private val pickBackImage = 101
    private var imageUri: Uri? = null
    ...
    override fun onCreate(savedInstanceState: Bundle?) {
        frontImageView = findViewById(R.id.cb_image_frontside)
        backImageView = findViewById(R.id.cb_image_backside)

        frontButton = findViewById(R.id.frontButton)
        backButton = findViewById(R.id.backButton)

        settButtonListeners()

    }

    private fun settButtonListeners() {
        frontButton.setOnClickListener {
           pickMedia(pickFrontImage)
        }

        backButton.setOnClickListener {
            pickMedia(pickBackImage)
        }
    }


    override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
        super.onActivityResult(requestCode, resultCode, data)
        if (resultCode == RESULT_OK) {
            imageUri = data?.data

            if (requestCode == pickFrontImage) {
                frontImageView.setImageURI(imageUri) // This will just change the image for "frontImageView"
                // But I can only always have one of the
                // imageViews changed at one time
            } else if (requestCode == pickBackImage) {
                backImageView.setImageURI(imageUri) // This will just change the image for "frontImageView"
                // But I can only always have one of the
                // imageViews changed at one time
            }
        }
    }

    // This is the fuction for the buttons
    fun pickMedia(requestCode: Int) {
        val gallery = Intent(Intent.ACTION_PICK, MediaStore.Images.Media.INTERNAL_CONTENT_URI)
        startActivityForResult(gallery, requestCode)
    }

On pickMedia function pass requestedCode as parameter.

Related