У меня есть проект mvvm с комнатой, LiveData. Я хочу выбрать несколько строк из базы данных для отображения в WebView. Но я не знаю, как выбрать из базы в моей деятельности. Это мой Dao
@Dao
public interface ReceiptDao {
@Insert
void insert(Receipt receipt);
@Query("SELECT Receipt FROM Receipt " +
"WHERE Person.removed = 0 AND Receipt.personId = :personId")
LiveData<List<Receipt>> findByPersonId(int personId);
@RawQuery(observedEntities = Receipt.class)
List<Receipt> filterList(SupportSQLiteQuery driveLastName);
...
и репозиторий
public class ReceiptRepository {
private ReceiptDao receiptDao;
private LiveData<List<Receipt>> receiptListLiveData;
public ReceiptRepository(Application application, int personId) {
DataBase dataBase = DataBase.getDataBase(application);
receiptDao = dataBase.receiptDao();
receiptListLiveData = dataBase.receiptDao().findByPersonId(personId);
}
public LiveData<List<Receipt>> getReceiptListLiveData() {
return receiptListLiveData;
}
public void insert(Receipt receipt) {
new InsertAsyncTask(receiptDao).execute(receipt);
}
public void update(Receipt receipt) {
new UpdateAsyncTask(receiptDao).execute(receipt);
}
public List<Receipt> filterList(String driverName, String dischargePlace, int minNetWeight,
int maxNetWeight, String loadingFromDate, String loadingToDate,
String dischargeFromDate, String dischargeToDate) {
String query = "SELECT Receipt.* FROM Receipt " +
"WHERE Person.removed = 0 ";
...
SimpleSQLiteQuery sqLiteQuery = new SimpleSQLiteQuery(query);
return receiptDao.filterList(sqLiteQuery);
}
/**/
private static class InsertAsyncTask extends AsyncTask<Receipt, Void, Void> {
private ReceiptDao receiptDao;
private InsertAsyncTask(ReceiptDao receiptDao) {
this.receiptDao = receiptDao;
}
@Override
protected Void doInBackground(Receipt... receipts) {
receiptDao.insert(receipts[0]);
return null;
}
}
...
Как я не могу выбрать из таблиц и иметь resultList в моей деятельности по созданию динамического c html. Я не могу использовать репозиторий в действии, и я получаю ошибку ниже. Должен ли я использовать viewModel?
java.lang.RuntimeException: Unable to start activity ComponentInfo{net.liyan.accounting/....view.Receipt.PreviewPdfActivity}:
java.lang.NullPointerException: Attempt to invoke virtual method
'java.util.List .....repository.ReceiptRepository.filterList(
java.lang.String, java.lang.String, int, int, java.lang.String, java.lang.String, java.lang.String, java.lang.String)'
on a null object reference