В этом уроке рассмотрим основные возможности LiveData. Как подписаться на его данные. Как помещать в него данные. Как он взаимодействует со своими подписчиками.
Click here to read this article!
Урок 2. LiveData
Урок 2. LiveData
Последний раз редактировалось damager82 25 июн 2018, 12:49, всего редактировалось 10 раз.
Re: Урок 2. LiveData
При использовании такого подхода, данные в UI элементы попадают после их (элементов) отображения на форме.
Что приводит к мерцанию при первом открытии формы, в моем случае это fragment. Чем больше LiveData используется и больше виджетов на форме тем сильнее заметны мерцания.
Что приводит к мерцанию при первом открытии формы, в моем случае это fragment. Чем больше LiveData используется и больше виджетов на форме тем сильнее заметны мерцания.
Re: Урок 2. LiveData
Уважаемые форумчане подскажите пожалуйста, почему не происходит вызова функции "onChanged"?
Саму подписку вроде верно сделал, данные обновляю путём вызова: DataController.refresh()
Исходный код лежит здесь: https://github.com/genbachae/T_LiveData
или здесь: https://drive.google.com/open?id=1wKZx_ ... _oJ9_WyU8W
Код: Выделить всё
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
}
Исходный код лежит здесь: https://github.com/genbachae/T_LiveData
или здесь: https://drive.google.com/open?id=1wKZx_ ... _oJ9_WyU8W