Я хочу получить список данных в реальном времени из моей базы данных комнат, который будет содержать все данные, которые имеют дату c.
Мой код DAO:
@Query ("SELECT * FROM data_table WHERE date = :currentDate")
LiveData<List<Data>> getUsefulData(String currentDate);
Класс данных:
@Entity(tableName = "data_table")
public class Data {
@PrimaryKey(autoGenerate = true)
public int id;
public String date;
public float xValue;
public float yValue;
public Data(String date, float xValue, float yValue) {
this.date = date;
this.xValue = xValue;
this.yValue = yValue;
}
//getters and setters
}
ViewModel:
public LiveData<List<Data>> getUsefulData(String currentDate){
return repository.getUsefulData(currentDate);
}
И в своей деятельности я хочу сделать что-то вроде этого:
viewModel = new ViewModelProvider(this).get(DataViewModel.class);
viewModel.getUsefulData(usefulData).observe(this, new Observer<List<Data>>() {
@Override
public void onChanged(List<Data> list) {
}
});
Проблема в том, что я не знаю, как написать репозиторий , Обычный метод getAllData не имеет параметров и выглядит следующим образом:
private LiveData<List<Data>> allData;
public DataViewModel(@NonNull Application application) {
super(application);
repository = new DataRepository(application);
allData = repository.getAllData();
}
public LiveData<List<Data>> getAllData() {
return allData;
}
Но в моем случае я не знаю, где получить параметр String. И кажется, что я не могу использовать AsyncTask:
public LiveData<List<Data>> getUsefulData(String currentDate){
new GetUsefulDataAsyncTask(dataDAO).execute(currentDate);
}
Я должен что-то вернуть. Не могли бы вы помочь мне?