在Android应用中创建列表

时间:2011-03-01 21:01:46

标签: android xml android-listview

我想知道在我的Android应用中创建列表的好方法。我在我的数据库中有所有信息,并希望每次启动应用程序时从中加载数据并从中创建一个列表(id和title)。

最好的方法是什么?

我应该创建一个PHP脚本,它使用包含所有列表项的JSON编码数组进行响应,还是应该创建一个XML文件,每次数据库中的数据发生更改时,每次启动时都会导入到应用程序中?或其他任何好方法吗?

由于所有东西都是由android中的XML文件制作的,感觉导入XML会是一件好事,是吗?如何将XML文件从Web服务器导入应用程序?

// Daniel

2 个答案:

答案 0 :(得分:1)

您可以使用JSON或XML。

您可以使用Web服务方法,也可以将数据库包含在您的应用程序中。

事实上,我经常选择创建我的数据的sqlite3数据库并将其包含在assets文件夹中,该文件夹可以在启动时复制到应用程序的数据文件夹中。

至于将sqlite3数据库从assets /复制到db数据目录,我发现these instructions有帮助。

答案 1 :(得分:0)

在您的情况下,我会选择JSON over 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设备本地读取。在我的应用程序中,我在传输之前将500kb压缩到~110kb,这大大节省了性能。这是一个如何读取流的部分示例:

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();
}

我希望这一切都有意义,这是漫长的一天编程:)

斯图