Вопросы о получении/обновлении данных с помощью Volley (и SimpleXML) на Android

Все данные, которые отображает мое приложение для Android, берутся из XML-файла. Я использую Volley для извлечения данных и SimpleXML для сопоставления данных XML с объектами с помощью пользовательского запроса Volley: SimpleXmlRequest .

Каждый раз, когда я обновляю содержимое, он считывает весь файл XML и снова создает каждый отдельный объект, и у меня такое чувство, что это не лучший способ сделать это, потому что этот файл может быть довольно большим. Поэтому у меня есть несколько вопросов по этому поводу:

  1. Есть ли способ "подписаться" на файл XML, чтобы получить только добавленные в него новые элементы, избегать чтения всего файла каждый раз? Я знаю, что Volley может кэшировать, но здесь это не очень помогает.
  2. Можно ли сделать запрос SimpleXmlArray с использованием платформы SimpleXML? Поможет ли это? Потому что я действительно не хочу анализировать файл самостоятельно...
  3. Если нет, стоит ли переключиться с XML на Json, чтобы я мог использовать JsonArrayRequest, или мне все равно придется читать весь файл и обновлять каждый элемент? Я никогда не использовал его раньше.
  4. Многие элементы из исходного файла отображаются в виде списка с помощью RecyclerView, но опять же, когда я обновляюсь, мне приходится удалять элементы, которые были раньше, и снова добавлять их все, так как я получаю все элементы сразу и, следовательно, не может использовать RecyclerView.notifyDataSetChanged().

Я много читал, даже пока не обнаружил RxJava и RxAndroid, которые кажутся идеальными, но слишком сложно интегрировать в них Volley и SimpleXML... поэтому я надеюсь, что вы можете мне помочь :)

Спасибо!


person nitrico    schedule 22.02.2015    source источник


Ответы (1)


Я всегда работаю с Json, кроме того, что он очень легкий, с такими библиотеками, как GSON, работать весело.

Чтобы получать только новые новые данные, я использую два поля в таблицах базы данных: 1 для isDeleted (логическое значение) и 1 для lastModified (длительное время).

Поле isDeleted применяется только в том случае, если к данным обращаются несколько пользователей.

person J.Vassallo    schedule 22.02.2015
comment
Спасибо, что нашли время, чтобы прочитать его и ответить, но это не слишком помогает прояснить мои вопросы. Кстати, я не пользуюсь никакой базой данных. - person nitrico; 22.02.2015
comment
привет нп ..так вы вручную обновляете данные? потому что данные обычно хранятся в базе данных - person J.Vassallo; 23.02.2015