Я пытаюсь получить данные изображения в представлении Recycler (каждый вложенный элемент является элементом PagerSnapHelper), но столкнулся с проблемой ниже
1 - вид рециркулятора не получает обновления при первой загрузке, субэлементы, кажется, смещены.
2 - мне нужно сдвинуть или коснуться экрана, чтобы перезагрузить представление, тогда все элементы отображаются нормально.
неисправный, при первой загрузке Recycler view
правильный, после того, как я проведу взглядом
В действии
override fun onGetDataSuccess(obj: RESP_DetailDiscover.ObjectDetailDiscover) {
if (obj.gallery_popup.isNullOrEmpty()) {
adapterPopup.setListData(mutableListOf())
} else {
adapterPopup.setListData(obj.gallery_popup)
}
}
adapterPopup = PopupAdapter(applicationContext)
val layoutManager = ZoomCenterCardLayoutManager(this)
layoutManager.setOrientation(LinearLayoutManager.HORIZONTAL)
val snapHelper = PagerSnapHelper()
snapHelper.attachToRecyclerView(rcvPopup)
rcvPopup.addOnScrollListener(CenterScrollListener())
rcvPopup.getViewTreeObserver().addOnGlobalLayoutListener(object : ViewTreeObserver.OnGlobalLayoutListener {
override fun onGlobalLayout() {
rcvPopup.getViewTreeObserver().removeOnGlobalLayoutListener(this)
val range = this@DetailDiscoverActivity.getResources().getDimension(R.dimen.width_item_horizontal_popup).toInt()
val margin = this@DetailDiscoverActivity.getResources().getDimension(R.dimen.margin_item_horizontal_popup).toInt()
val extent = (rcvPopup.getWidth() - range) / 2 - margin
rcvPopup.setPadding(extent, 0, extent, 0)
rcvPopup.setClipToPadding(false)
}
})
rcvPopup.layoutManager = layoutManager
rcvPopup.adapter = adapterPopup
layoutManager.smoothScrollToPosition(rcvPopup, null, 0)
rcvPopup.addItemDecoration(LinePagerIndicatorDecoration())