@Arteriya328

Как автоматически сохранить, последние значения listview и вывести offline?

При создании приложения, которое берет данные (json) из api банка с помощью retrofit2, мне в ответ приходят последние значения курсов валют в listview. я смог реализовать то что хотел, но при повторном открытии приложения в offline, приложение автоматом запрашивает данные у сервера, в ответ прилетает очевидная ошибка и следовательно: я не могу работать с данными без подключения к интернету.

Вопрос: Как реализовать автоматическое сохранение данных, в моем случае: курса валют. Так чтобы, пользователь перезаходил в приложение уже в режиме offline и смог использовать те значения, которые были сохранены автоматически в listview.
код
public class MainActivity extends AppCompatActivity {

    Float trip;
    Float trip2 = 34.2f;

    SharedPreferences sPref;

    String flo3 = "EUR: ";

    EditText etText;

    Button saveBtn;

    final  String SAVED_TEXT = "saved_text";

    final String LOG_TAG = "myLogs";
    private float selectedFromList;



    public void onSaveInstanceState(Bundle savedState) {
        super.onSaveInstanceState(savedState);

    }


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        final ListView listView = (ListView) findViewById(R.id.listView);


        Retrofit retrofit = new Retrofit.Builder()
                .baseUrl(Api.BASE_URL)
                .addConverterFactory(GsonConverterFactory.create())
                .build();

        Api api = retrofit.create(Api.class);

        Call<List<Hero>> call = api.getHeroes();

        call.enqueue(new Callback<List<Hero>>() {
            @Override
            public void onResponse(Call<List<Hero>> call, Response<List<Hero>> response) {
                List<Hero> heroes = response.body();


                Float[] heroNames = new Float[heroes.size()];

                for(int i = 0; i < heroes.size(); i++) {

                    heroNames[i] = heroes.get(i).getBuy();

                }

                listView.setAdapter(
                        new ArrayAdapter<Float>(
                                getApplicationContext(),
                                android.R.layout.simple_list_item_single_choice,
                                heroNames
                        )


                );


                Float selectedFromList = (Float) listView.getItemAtPosition(1);
                System.out.println("EUR = : " + selectedFromList);

                listView.setItemChecked(1, true);

                trip = selectedFromList;

                TextView ob5 = (TextView)findViewById(R.id.textView23);
                ob5.setText(Float.toString(trip));


            }


            @Override
            public void onFailure(Call<List<Hero>> call, Throwable t) {
                Toast.makeText(getApplicationContext(), t.getMessage(),Toast.LENGTH_SHORT).show();
            }

        });

    }
  • Вопрос задан
  • 63 просмотра
Решения вопроса 1
zagayevskiy
@zagayevskiy Куратор тега Java
Android developer at Yandex
В ListView, как и в других вьюхах, ничего не сохраняется. Ты хочешь персистентное сохранение. Можно сохранять в preferences, файл, БД. Выбирай сам, куда тебе удобнее.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
YLab Тольятти
от 80 000 до 130 000 руб.
RentaTeam Москва
от 120 000 до 170 000 руб.
Okmedia Москва
от 190 000 до 250 000 руб.
22 июл. 2019, в 18:33
200 руб./за проект
22 июл. 2019, в 18:28
10000 руб./за проект