[英]Android Kotlin change ImageView image source in RecyclerView
我正在努力解決一個問題。 我有一個帶有圖像的 RecyclerView 的活動。 RecyclerView 通過適配器填充,這很好用,我得到了他的起始屏幕。
在此之后,我想循環更改此圖像,並隨機暫停 2 秒。 這就是我需要幫助的地方,因為我已經嘗試過,立即顯示結束屏幕,兩次圖像更改之間有時間,這就是顯示的內容。
我試圖在 onStart 函數調用 hideElements() 函數中實現這一點。 這是我的 hideElements() 函數:
private fun hideElements()
{
if(recyclerView.adapter?.itemCount == 0)
{
return
}
var hideOrdder: ArrayList<Int> = ArrayList<Int>()
for (i in 0 until recyclerView.adapter?.itemCount!!)
{
hideOrdder.add(i)
}
hideOrdder.shuffle()
for(i in hideOrdder)
{
_gridElementList[i].drawableId = R.drawable.kerojel
handler = Handler()
runnable = Runnable {
adapter!!.notifyItemChanged(i)
}
runOnUiThread {
handler!!.postDelayed(runnable!!, 10000)
}
}
}
我也嘗試創建一個線程,但失敗了。 謝謝
您正在循環內_gridElementList
更改整個數據集_gridElementList
。 那是不對的。 可以有多種解決方案。 您可以使用handler
和Timer
。 使用處理程序發布解決方案。 它並不優雅,但它應該可以勝任。 我已經使用處理程序設置了一個延遲調用,並在 2 秒后觸發時設置了后續調用。
val list = ArrayList<Int>()
val hideOrder: ArrayList<Int> = ArrayList<Int>()
val handler=Handler()
val runnable = Runnable {
list[hideOrder[changeIndex]].drawableId=R.drawable.kerojel
adapter?.notifyItemChanged(hideOrder[changeIndex])
scheduleHideElements()
}
var changeIndex=-1
private fun scheduleHideElements() {
if(changeIndex<hideOrder.size){
changeIndex++
handler.postDelayed(runnable,2000)
}
}
您需要在類級別預先保存hideOrder
。 這應該有效。 它不是完整的代碼,但你明白了。 請確保在onDestroy()
調用handler.removeCallbacks(runnable)
onDestroy()
。
override fun onStart()
{
putElements()
var hideOrderList: ArrayList<Int> = hideOrderList()
object : CountDownTimer((settings.row * settings.column * settings.speed * 1000).toLong(), (settings.speed * 1000).toLong())
{
override fun onTick(miliSeconds: Long)
{
if (changeIndex < settings.row * settings.column)
{
_gridElementList[hideOrderList[changeIndex]].drawableId = R.drawable.kerojel
adapter!!.notifyItemChanged(hideOrderList[changeIndex])
changeIndex++
}
}
override fun onFinish()
{
Toast.makeText(this@GameActivity, "START", Toast.LENGTH_SHORT)
.show()
}
}.start()
startCounter()
super.onStart()
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.