У меня есть объект LiveData, для которого я выполняю Transformations.map (), чтобы применить формулу к данным перед уведомлением любых наблюдателей.Однако у меня есть функция удаления в пользовательском интерфейсе, которая удаляет объект из БД (комнаты), и когда LiveData обновляется, Transformation.map () вызывает сбой со следующей ошибкой «Попытка вызвать виртуальный метод» double java.lang.Double.doubleValue () 'для нулевой ссылки на объект', так как объект, который он наблюдал, был удален из БД
Я пытался также удалить наблюдателя после первого обновления, но он по-прежнему выдает ту же ошибку.
Я разместил код ниже, у кого-нибудь есть идеи для его решения?
public LiveData<String> getTotalValue() {
if (totalValueLiveData == null) {
loadTotalValue();
}
totalValue = Transformations.map(totalvalueLiveData, total -> String.format(Locale.getDefault(), "%.1f", UtilUserUnitsConverter.convertValue(total, userUnit)));
return totalValue;
}
final Observer<String> getTotalValueObserver = new Observer<String>() {
@Override
public void onChanged(@Nullable String totalValue) {
if (totalValue != null) {
totalValueTv.setText(totalValue);
}
viewModel.getTotalValue().removeObserver(getTotalValueObserver);
}
};
viewModel.getTotalValue().observe(this, getTotalValueObserver);