Элементы списка RecycleView не отображаются

Я пытаюсь заставить RecyclerView работать в моем приложении, где элементы списка – это ImageView s, а изображения загружаются и помещаются внутри (асинхронно) в метод onBindViewHolder . У меня нет ошибок в моем коде, но по какой-то причине

только элементы списка, которые будут видны (даже частично) пользователю при загрузке активности, загружают в них изображения.

Хотя я не вижу изображения, я заметил, что высота и ширина этих предметов были правильно распределены. И поскольку изображения сначала загружаются, а затем определяются размеры ImageView , я полагаю, что проблема имеет какое-то отношение к самому RecyclerView ? Если кто-то может пролить свет на это, было бы здорово. Благодарю.

Я также хотел бы добавить, что если действие приостановлено, а затем возобновлено (нажав кнопку «квадрат» и затем возобновив его), изображения всех элементов списка загрузятся правильно.

Рис. 1 так как вы можете видеть серой участок, где должно быть изображение Рис. 2 несколько более убедительным :)

Вот мой код:

onCreate метод:

 override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) recyclerView { id = ViewID.ID_LIST } val imgList = ArrayList<ImageView>() imgList.add(ImageView(ctx)) imgList.add(ImageView(ctx)) imgList.add(ImageView(ctx)) imgList.add(ImageView(ctx)) val lv = findViewById(ViewID.ID_LIST) as RecyclerView lv.layoutManager = LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false) lv.adapter = ImageRecyclerAdapter(ctx, imgList) } 

Класс RecyclerView.Adapter :

 private class ImageRecyclerAdapter(val context: Context, val imageList: ArrayList<ImageView>) : RecyclerView.Adapter<RecyclerView.ViewHolder>() { override fun onViewRecycled(holder: RecyclerView.ViewHolder?) { super.onViewRecycled(holder) if (holder != null) { val v = holder.itemView as ImageView v.setImageBitmap(null) } } override fun onBindViewHolder(p: RecyclerView.ViewHolder, position: Int) { val v = p.itemView as ImageView Ion.with(v) .load("https://pbs.twimg.com/profile_images/616076655547682816/6gMRtQyY.jpg") .setCallback({ exception, t -> if (t != null) { val dm = Point() context.windowManager.defaultDisplay.getRealSize(dm) val w = t.maxWidth val h = t.maxHeight val params = t.layoutParams if (params != null) { params.width = dm.x params.height = (dm.x * (h.toDouble() / w.toDouble())).toInt() t.layoutParams = params t.requestLayout() } } }) } override fun getItemCount(): Int { return imageList.size } override fun onCreateViewHolder(parent: ViewGroup?, viewType: Int): RecyclerView.ViewHolder { val v = ImageView(context) return object : RecyclerView.ViewHolder(v) {} } } 

Он работал после того, как я сделал привязку данных к синхронному запросу, и я переместил манипуляцию ImageView (изменение LayoutParams ) в переопределенный метод onViewAttachedToWindow моего адаптера.

onViewAttachedToWindow :

 override fun onViewAttachedToWindow(holder: RecyclerView.ViewHolder?) { super.onViewAttachedToWindow(holder) val t = holder?.itemView as ImageView val dm = Point() context.windowManager.defaultDisplay.getRealSize(dm) val w = t.maxWidth val h = t.maxHeight val params = t.layoutParams if (params != null) { params.width = dm.x params.height = (dm.x * (h.toDouble() / w.toDouble())).toInt() t.layoutParams = params t.requestLayout() } } 

onBindViewHolder :

 override fun onBindViewHolder(p: RecyclerView.ViewHolder, position: Int) { val v = p.itemView as ImageView Ion.with(v) .load(imageList[position].toString()) .tryGet() } 
Intereting Posts
Синтаксис синтаксиса Kotlin лямбда Атрибут Button onClick не имеет значения, если активность написана в Котлине Kotlin Любые с lambdas что такое икома kotlin для эквивалента этого итератора python Компоненты архитектуры Android Room ViewModel CompleteableFormAction Можете ли вы использовать объект, который синхронизирован как блокировка Какая зависимость maven от огурца котлин? Kotlin, Как использовать функцию коллекции, чтобы упростить этот код Получить дату datepicker на Kotlin TornadoFX Ни один из подписчиков RxJava onNext / onError / onComplete не вызывается при цепочке. Наблюдения, созданные из Observable.create () Firebase: чистый способ использования полей enum в Kotlin / Java? Конструкция схемы коллекций Spring и monsodb Kotlin переопределяет набор элементов и получает Как отправить значение params как json array Объявление пользовательской «чистой» задачи при использовании стандартных плагинов жизненного цикла Gradle запрещено