Задать вопрос
@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();
            }

        });

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

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

Похожие вопросы