У меня есть приложение, в котором я использую библиотеку Room Persistence Library .
Теперь у меня есть эта проблема:
У меня в ViewModel :
public LiveData<List<Code>> getAllCodes() {
return codeRepository.getAllCodes();
}
В моем codeRepository :
public LiveData<List<Code>> getAllCodes() {
return appDatabase.codeDao().getAll();
}
По моему ДАО
@Query("SELECT * FROM codes ORDER BY id DESC")
LiveData<List<Code>> getAll();
Итак, в своей деятельности я могу сделать это:
codeViewModel.getAllCodes().observe(this, new Observer<List<Code>>() {
@Override
public void onChanged(@Nullable final List<Code> codes) {
adapter.addItems(codes);
}
});
И это работает, но теперь, в другом упражнении, я вызываю функцию, где мне нужно вызвать RoomDatabase, получить все коды и создать CSV.
Моя проблема в том, что я делаю это:
download_csv.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
codeViewModel.getAllCodes().observe(this, new Observer<List<Code>>() {
@Override
public void onChanged(@Nullable final List<Code> codes) {
download(codes);
}
});
}
});
Но каждый раз, когда модель кода добавляется в мою базу данных. Это называется загрузкой .
Итак, как я могу получить данные за один раз из моей базы данных?
Должен ли я создать вторую функцию, которая просто возвращает List или есть более чистый способ?