Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Помогите. Не работает поиск в приложении "Конвектор валют"

Евгений Туманов Ученик (98), на голосовании 11 месяцев назад
Кто-то удалил отсюда весь код, и теперь поиск не работает. Давайте починим его!
В этом нам помогут методы showWholeData() и showFilteredData(final String query).
Первый показывает весь список валют, второй показывает только те валюты, которые соответствуют поисковому запросу final String query.


package com.practicum.currencyconverter.presentation.currencies;

import android.util.Log;

import com.practicum.currencyconverter.app .ResourceProvider;
import com.practicum.currencyconverter.data.cache.CurrencyCourseDataStore;
import com.practicum.currencyconverter.data.models.Currency;
import com.practicum.currencyconverter.data.models.CurrencyRate;
import com.practicum.currencyconverter.data.network.ResultCallback;
import com.practicum.currencyconverter.di.DI;
import com.practicum.currencyconverter.presentation.base.BaseViewModel;

import java.util.ArrayList;
import java.util.List;
import java.util.stream .Collectors;

import androidx.lifecycle.LiveData;
import androidx.lifecycle.MutableLiveData;

public class CurrenciesViewModel extends BaseViewModel {

private final CurrencyCourseDataStore currencyCourseDataStore = DI.currencyCourseDataStore();
private final ResourceProvider resourceProvider = DI.resourceProvider();

private final MutableLiveData<List<Currency>> currenciesLiveData = new MutableLiveData<>();
private List<Currency> currencies = new ArrayList<>();

public LiveData<List<Currency>> getCurrenciesLiveData() {
return currenciesLiveData;
}

public void loadCurrencies() {
currencyCourseDataStore.getCurrencyResult(false, new ResultCallback<CurrencyRate>() {
@Override
public void onSuccess(final CurrencyRate data) {
currencies = CurrenciesFactory.getAvailableCurrencies(data);
currenciesLiveData.postValue(currencies);
}

@Override
public void onFailure(final Throwable error) {
Log.d("CurrenciesViewModel", error.getMessage());
}
});

}

public void search(final String query) {

// кажется, это последняя пакость наших троллей ¯\_(ツ)_/¯
// давайте же наконец сделаем наше приложение полезным для любимых пользователей
}

private void showWholeData() {
currenciesLiveData.postValue(currencies);
}

private void showFilteredData(final String query) {
final List<Currency> searchResult = currencies.stream ()
.filter(currency -> {
if (currency.getCode().toLowerCase().contains(query.toLowerCase())) {
return true;
}
return resourceProvider.getString(currency.nameRes()).toLowerCase().contains(query.toLowerCase());
}
).collect(Collectors.toList());

currenciesLiveData.postValue(searchResult);
}
}
Голосование за лучший ответ
Похожие вопросы