Страница 1 из 1

Урок 2. LiveData

Добавлено: 28 дек 2017, 20:22
damager82
В этом уроке рассмотрим основные возможности LiveData. Как подписаться на его данные. Как помещать в него данные. Как он взаимодействует со своими подписчиками.


Click here to read this article!

Re: Урок 2. LiveData

Добавлено: 23 мар 2018, 01:22
dmitres
При использовании такого подхода, данные в UI элементы попадают после их (элементов) отображения на форме.
Что приводит к мерцанию при первом открытии формы, в моем случае это fragment. Чем больше LiveData используется и больше виджетов на форме тем сильнее заметны мерцания.

Re: Урок 2. LiveData

Добавлено: 07 дек 2019, 07:03
genbachae
Уважаемые форумчане подскажите пожалуйста, почему не происходит вызова функции "onChanged"?

Код: Выделить всё

class MainActivity : AppCompatActivity() {

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)

    val liveData = DataController.getData()

    liveData?.observe(this, Observer<String>() {
        @Override
        fun onChanged(@Nullable value:String) {
            textView.text = value
        }
    });
}

fun refresh(view: View) {
    DataController.refresh()
}

object DataController {                                 //  это синглтон!
private val liveData = MutableLiveData<String>()

fun getData(): LiveData<String>? {
    return liveData
}

fun getCurrentDateTime(): Date {
    return Calendar.getInstance().time
}

fun refresh(){
    val date = getCurrentDateTime()
    val dateInString = date.toString()
    liveData.value = dateInString
}
Саму подписку вроде верно сделал, данные обновляю путём вызова: DataController.refresh()

Исходный код лежит здесь: https://github.com/genbachae/T_LiveData

или здесь: https://drive.google.com/open?id=1wKZx_ ... _oJ9_WyU8W