Не удалось загрузить выбранные изображения для повторного просмотра

#android #android-studio #kotlin

Вопрос:

Я работаю над приложением для преобразования jpg в pdf, поэтому я хочу, чтобы пользователь выбирал изображения из своего хранилища, и после выбора изображений я хочу, чтобы пользователи показывали выбранные ими изображения в режиме рециркулятора. Для этого я создал адаптер и сделал следующее

класс MyAdapter (private var uri: ArrayList):Просмотр вторсырья.Адаптер<MyAdapter.myViewHolder>(){

 class myViewHolder(itemView: View):RecyclerView.ViewHolder(itemView) {
    val titleImage:ImageView=itemView.imageView
}

override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): myViewHolder {
    val itemView=LayoutInflater.from(parent.context).inflate(R.layout.setimage,parent,false)
    return myViewHolder(itemView)
}

override fun onBindViewHolder(holder: myViewHolder, position: Int) {
    holder.titleImage.setImageURI(uri[position])
    Log.d("Check","onBindingViewHolder is working")
}

override fun getItemCount(): Int {
    return uri.size
}}
 

В основной деятельности я сделал следующее:-

 class MainActivity : AppCompatActivity() {
private val PICK_IMAGE_CODE = 0
private lateinit var image: ArrayList<Uri>
val position=0

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)
    image= ArrayList()
    add.setOnClickListener{
        selectImage()
    }
    recyclerView.layoutManager=GridLayoutManager(this, 4)
    recyclerView.setHasFixedSize(true)
    val adapter= MyAdapter(image)
    recyclerView.adapter=adapter
}

private fun selectImage() {
    val gallery = Intent(Intent.ACTION_GET_CONTENT)
    gallery.setType("image/*")
    gallery.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true)
    startActivityForResult(Intent.createChooser(gallery, "Pictures: "), PICK_IMAGE_CODE)
}

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
    super.onActivityResult(requestCode, resultCode, data)
    val adapter= MyAdapter(image)
    if(requestCode == PICK_IMAGE_CODE amp;amp; resultCode == Activity.RESULT_OK amp;amp; null != data){
            if (data.clipData != null){
                val count=data.clipData!!.itemCount
                for (i in 0 until count){
                    val imageUri= data.clipData!!.getItemAt(i).uri
                    image.add(imageUri)
                    Log.d("Check",image.toString())
                }
            }
    }else{
        Toast.makeText(this,"Select a valid image",Toast.LENGTH_SHORT).show()
    }

}}
 

Но даже после выбора изображений он не может загружать изображения в режиме рециркулятора. Кто-нибудь может мне в этом помочь
Спасибо за любое предложение…

Ответ №1:

Тебе нужно позвонить adapter.notifyDataSetChanged() onActivityResult() .