Проблемы с хранением данных списка

Я хочу реализовать в своем приложении функциональность, подобную твиттеру, так как при первом входе в систему вы получаете данные с сервера и показываете их в списке, но если вы снова откроете приложение без выхода из системы, я не хочу, чтобы приложение запрашивало сервер снова для получения тех же данных, поэтому мой вопрос заключается в том, где хранить данные, которые были получены ранее, поэтому приложение не будет снова запрашивать сервер, а для получения новых данных я реализовал обновляемое представление списка, поэтому пользователь будет получать новые данные, обновляя список .

И еще одна вещь: после обновления я хочу сохранить новые данные в том же месте, где были сохранены предыдущие данные, и я хочу сохранить только 20 элементов, чтобы предотвратить переполнение памяти. пожалуйста, помогите кому-нибудь.

У меня есть выборка массива ArrayList>, где я сохраняю данные при извлечении с сервера.


person Shashank Agarwal    schedule 09.10.2013    source источник
comment
Сохраняйте элементы в файле, когда пользователь закрывает приложение. Или, возможно, сохраните ответ сервера в строку (файл или общие настройки), загрузите их при создании и повторите их анализ.   -  person Sherif elKhatib    schedule 09.10.2013
comment
хорошо, я попытаюсь сохранить ответ в виде строки и перепарсить его   -  person Shashank Agarwal    schedule 10.10.2013
comment
Я делаю так: String Store_json_in_sharedpreferences=new Gson().toJson(fetch); e.putString(ONGOING_DATA, Store_json_in_sharedpreferences); е.коммит(); но не может ли он переопределить эту строку новыми данными, когда я снова запрошу сервер ?? я хочу хранить все данные как предыдущие, так и новые   -  person Shashank Agarwal    schedule 10.10.2013


Ответы (1)


Сервер должен возвращать информацию в формате JSON или XML, просто поместите ее в общие настройки и извлеките/покажите позже на основе нескольких внутренних флагов.

Например, вот пример кода для хранения вещей в общих настройках:

private void writeStrToPreferences(String strKey, String str){
        if(strKey == null) return;
        if(str == null) return;
        if(str.length() <= 0) return;

        SharedPreferences.Editor ed = getSharedPreferences(strKey, 0).edit();
        ed.putString(strKey, str);
        ed.commit();
    }

Чтение обратно также будет аналогичным и простым

private String readStrFromPreferences(String strKey){
        if(strKey == null)return "NA";
        if(strKey.length() <= 0) return "NA";
        return getSharedPreferences(strKey, 0).getString(strKey, "NA");
    }

Для получения дополнительной информации см. документацию здесь: http://developer.android.com/reference/android/content/SharedPreferences.html

person Naeem A. Malik    schedule 09.10.2013
comment
спасибо за ответ, но я помещаю все данные json в список массивов хэш-карты, так как мне сохранить этот список массивов в общих настройках? - person Shashank Agarwal; 10.10.2013
comment
сохраните его в общих настройках в виде строки, прежде чем создавать из него хэш-карту... сразу после получения ответа от сервера поместите его в общие настройки... просто... - person Naeem A. Malik; 10.10.2013