Как получить значение в kotlin? - PullRequest
0 голосов
/ 13 апреля 2020

Я помню, что в kotlin языке есть возможность получить значение по свойству get(), но не могу найти, как его записать.

Что я имею в виду: у меня есть LiveData в мой ViewModel, и мне нужно, чтобы доступ к публикации в LiveData имел только ViewModel, а снаружи только возможность получить подписку.

На данный момент я реализовал это

class MyViewModel(ctx: Context) : AndroidViewModel(ctx as Application)
{
    private val _showLoadingPB = SingleLiveEvent<Boolean>()

    fun showLoadingPB(): SingleLiveEvent<Boolean>
    {
        return _showLoadingPB
    }
...
}

Но я помню, что есть возможность написать так

class MyViewModel(ctx: Context) : AndroidViewModel(ctx as Application)
{
    private val _showLoadingPB = SingleLiveEvent<Boolean>()

    val showLoadingPB: SingleLiveEvent<Boolean>
        get() => _showLoadingPB
}

Как заставить это работать?

1 Ответ

1 голос
/ 13 апреля 2020

Я вспомнил, как это должно быть

class MyViewModel(ctx: Context) : AndroidViewModel(ctx as Application)
{
    private val _showLoadingPB = SingleLiveEvent<Boolean>()

    val showLoadingPB: LiveData<Boolean>
        get() = _showLoadingPB
}

Таким образом, пользователь не может присвоить новое значение вашему SingleLiveEvent, а также опубликовать новое событие в LiveData, он может просто наблюдать его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...