Я начал изучать реализацию MVVM из Руководства Google здесь:
https://codelabs.developers.google.com/codelabs/android-room-with-a-view/#8 (размещена ссылка, особенно на интересующую меня страницу).
Поскольку я понял, как реализовать его на Java, я решил перейти на Kotlin.
При инициализации конструктора в расширении класса AndroidViewModel
мне нужно вызвать super
, и он выдает следующую ошибку:
"super" не является выражением, его можно использовать только в левой части
точки ('.') "
Пока я гуглил и нашел похожую тему , но я ее совсем не понял, поэтому не решил свою проблему.
Это мой код для ViewModel
класса:
class NotesViewModel private constructor(application: Application) : AndroidViewModel(application){
var mRepository: NotesRepository? = null
var mAllNotes: LiveData<List<Notes>>? = null
init {
super(application) // <-- here it throws me an error
mRepository = NotesRepository(application)
mAllNotes = mRepository!!.getAllWords()
}
fun getAllNotes(): LiveData<List<Notes>>{
return mAllNotes!!
}
fun insert(notes: Notes){
mRepository!!.insert(notes)
}
}
Итак, как мне правильно назвать super, создать конструктор?
Это правильный код Java для этого класса:
public class WordViewModel extends AndroidViewModel {
private WordRepository mRepository;
private LiveData<List<Word>> mAllWords;
public WordViewModel(Application application) {
super(application);
mRepository = new WordRepository(application);
mAllWords = mRepository.getAllWords();
}
LiveData<List<Word>> getAllWords() {
return mAllWords;
}
void insert(Word word) {
mRepository.insert(word);
}
}