Создать список в приложении для Android - PullRequest
0 голосов
/ 02 марта 2011

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

Каков наилучший подход?

Должен ли я создать PHP-скрипт, который отвечает JSON-кодированным массивом со всеми элементами списка, или я должен создать XML-файл, который генерирует каждый раз, когда изменяются данные в БД, которые я импортирую в приложение при каждом его запуске? или любой другой хороший способ сделать это?

Так как все вещи сделаны с помощью XML-файлов в Android, кажется, что импортировать XML было бы хорошо, не так ли? А как мне импортировать XML-файл с веб-сервера в приложение?

// Даниил

Ответы [ 2 ]

1 голос
/ 02 марта 2011

Вы можете использовать JSON или XML.

Вы можете использовать подход веб-службы или включить свою базу данных в ваше приложение.

Фактически, я чаще всего выбираю создание базы данных sqlite3 из моих данных и включаю ее в папку ресурсов, которую можно при запуске скопировать в папку данных приложения.

Что касается копирования базы данных sqlite3 из assets / в каталог данных db, я нашел эти инструкции полезными.

0 голосов
/ 02 марта 2011

В вашей ситуации я бы выбрал JSON вместо XML по всем причинам, указанным в следующем сообщении: http://ajaxian.com/archives/json-vs-xml-the-debate

Кроме того, в Android по умолчанию встроены массивы JSON, поэтому вам не нужно выполнять дополнительную передачу кода.

return new JSONArray("my json string goes here..."); 

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

Чтобы уменьшить поток, вы можете сжать ваш gzip-файл из php, так как он может быть изначально считан устройством Android. В моем приложении я сжимаю 500 КБ до ~ 110 КБ перед передачей, что значительно снижает производительность. Вот частичный пример того, как читать поток:

InputStream in = null;
HttpURLConnection httpConn = null; // you will have to write your on code for this bit.

if (httpConn.getContentEncoding() != null) 
{
String contentEncoding = httpConn.getContentEncoding().toString();
if (contentEncoding.contains("gzip")) 
{ 
    in = new GZIPInputStream(httpConn.getInputStream());
}
} 
else 
{ 
    in = httpConn.getInputStream();
}

Я надеюсь, что все это имеет смысл, это был долгий день программирования:)

Stu

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...