Если вы собираетесь работать в Kotlin, я настоятельно рекомендую изучить LiveData, это действительно полезно для обеспечения соответствия вашего пользовательского интерфейса вашим данным.
На этом примечании:
class SampleViewModel : ViewModel() {
private val _messages = MutableLiveData<List<Int>>()
val messages: LiveData<List<Int>>
get() = _messages
init {
_messages.value = listOf(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
}
fun dropList(){
_messages.postValue(_messages.value?.dropLast(1))
}
}
Вот пример модели представления, для простоты я использовал List of Ints в качестве сообщения.
messages: класс * LiveData , будет обновлять мой текстовый просмотр, когда он обновлено.
_messages: MutableLiveData является подклассом LiveData, который в основном используется для установки / публикации значения, как правило, не для использования вне модели представления.
dropList () удалит последний элемент из список сообщений (т. е. самые последние)
Вот мой MainActivity
val viewModel = ViewModelProvider(this).get(SampleViewModel::class.java)
viewModel.messages.observe(this, Observer {
if (it.isNullOrEmpty()){
tv.text = "No messages"
} else {
tv.text = it[it.size - 1].toString()
}
})
GlobalScope.launch {
while (true){
delay(1000)
viewModel.dropList()
}
}
Я установил наблюдателя на сообщения, чтобы при отправке нового значения в _messages он обновлял мое текстовое представление с новое значение.
Я использовал GlobalScope для запуска функции dropList viewmodel, так как это долго выполняемая сопрограмма (в этом случае бесконечно), так что она будет выполняться каждую 1 секунду.
У вас, похоже, нет конкретные подробности того, как вы будете получать этот список сообщений, но я надеюсь, что это помогло показать один метод отображения и уменьшения списка после его получения.