Android, пользовательский ArrayList для хранения

Я читал много тем о stackoverflow и Google об этом аргументе, но я не могу сориентироваться при записи пользовательского ArrayList в файлы! У меня есть ArrayList типа CustomType. «CustomType» имеет две строковые переменные: «имя» и «описание».

Я хочу сохранить этот ArrayList для чтения после закрытия и повторного открытия моего приложения. Кто-нибудь помогает мне в этом? и кто-нибудь объяснит мне, что происходит, когда я сохраняю/читаю?


person TimeParadox    schedule 10.11.2011    source источник


Ответы (3)


вы можете написать это просто как файл csv, например,

1,name,desc
2,name2,desc2
3,name3,desc3
...

или вы можете использовать библиотеку gson - http://code.google.com/p/google-gson/, чтобы преобразовать его в строку json, а затем записать в файл, чтобы при чтении вы могли напрямую получить объект из json,

я бы лично использовал второй метод,

Изменить: для записи в csv

try
{
  FileWriter writer = new FileWriter("<path>/MyFile.csv");
  while(lst.next())
  {
     for(int i = 0; i < columnSize; i++)
     {
        writer.append(i);
        writer.append(',');
        writer.append(lst.get(i).getName());
        writer.append(',');
        writer.append(lst.get(i).getDesc());
     }
     writer.append('\n');
  }
}
catch(Exception e)
{
  e.printStackTrace();
}

(при условии, что объект внутри ArrayList имеет методы getName() и getDesc() )

это может быть полезно прочитать его снова,

Получить и проанализировать файл CSV в Android

person Optimus    schedule 10.11.2011
comment
Ок большое спасибо за ответ! это простой способ использовать файл cvs? - person TimeParadox; 10.11.2011
comment
Также файл csv представляет собой простой текстовый файл с расширением .csv (csv - значения, разделенные запятыми). - person Optimus; 10.11.2011
comment
Спасибо за код!! я предпочитаю этот путь, он кажется простым ^^ - person TimeParadox; 11.11.2011

Чтобы сохранить любые данные, вы должны выбрать любую из доступных технологий хранения данных.

1)shared preferences
2)internal storage
3)external storage 
4)Sqlite
5)internet server

подробные документы здесь

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

person Shailendra Singh Rajawat    schedule 10.11.2011
comment
да ! я читал эти документы, но я не понимаю, что мне делать в моей конкретной ситуации, я думаю, что мне нужно использовать внутреннюю память (мои данные будут не больше 400/500 КБ.. - person TimeParadox; 10.11.2011

Вы также можете использовать файлы XML:

Таким образом, вы можете использовать все виды текста и символов, если вы используете CSV, вы не можете использовать «разделитель» в своем контенте.

person Moss    schedule 10.11.2011