#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()
.