2013-01-20 62 views
0

我的应用程序的功能可以模仿wanelo之类的东西。如何在列表视图之间存储和传递信息

用户将在一个活动中输入他们想要购买的商品的搜索字词。他们会看到与该搜索词匹配的项目列表。所以,ListView将包含Item s。一个Item有许多属性,其中主要有:

  • id - 对应于Item的ID在数据库中
  • date_modified - 时间戳知道Item是否被更新
  • remote_directory - 一个URL Item的资产的基础目录如图标和其他图像。 URL格式如下:http://my.domain.com/items/a1bc234d/其中a1bc234d是随机生成的,通过date_modified播种。
  • remote_dir_name - remote_directory的子串。从上面的例子中,这个值将是a1bc234d

从搜索结果列表中,用户可以标记稍后要查看的项目。这将触发几件事情:

  • 首先,我想广告Item到不同的ListView表示Item S中的用户“下载”。
  • 然后,我想实际下载所有的Item的数据:描述,所有资产在remote_directory。这些东西将我应用的内部存储保存在文件夹remote_dir_name/data/data/my.app.package.name/files/a1bc234d/

这些“下载的”项目旨在在离线模式下可见。

该“已下载”ListView对应于不同的活动,并且将具有显示Item的下载状态进度条的列表项。此外,此ListView应该是可编辑的:使用应该能够删除并重新排列列表中的Item

最后,“下载”ListView需要持久。它应该保持秩序。搜索结果的ListView不需要保留。

我在计算如何存储下载的Item列表时遇到了很多麻烦。 “下载”ListView需要知道何时更新列表项目的进度条,如果它正在下载。我认为将Item存储在数据库中有点矫枉过正,因为我会不断更新一行的列,直到下载完成。我应该如何在这两个ListView之间传递这个下载状态信息?

回答

1

我不完全确定我在这里掌握了整个图片,但在我看来,你需要两个ArrayList字段。

List<Item> downloadedItems = new ArrayList<Item>; 
List<Item> searchItems = new ArrayList<Item>; 

那么你需要做的是为DownloadListView创建你自己的自定义ListAdapter并创建你自己的自定义download_item。xml,你会膨胀在ListAdapter里面。在你的情况下,这听起来像这个download_item.xml将包含一个文本视图和一个进度条,并且需要包含(或顶层)布局集来包装内容。

现在,在SearchListView的点击侦听器中设置它,以便它将调用一个函数,该函数将捕获被点击的项目并将其添加到downloadedItems ArrayList并开始下载,以及刷新listadapter数据集。它知道要更新列表中的项目。

下载应该在AsyncTask中,并且您希望使用@Override publishProgress()部分,以便您可以更新下载栏的状态。

原谅我的任何错误的景象或错误,我只是醒了。

+0

所以,我想我想知道ArrayLists应该驻留在哪里。我编辑了我的问题,包括downloadItems listview在一个Activity中,而searchItems listview在另一个中。通常,用户将在开始downloadItems活动之前进行搜索。 downloadedItems Activity应该如何检索ArrayList?从searchItems活动?这对我来说似乎有点奇怪......我想我认为downloadItems应该存在于一个中心位置,而不是活动的一部分? Lemme知道我是否在这里遇到了错误的事情! – user5243421

+0

有几件事情。单身人士可以在这里使用。或者你可以将列表反序列化为一个json字符串并传递它,或者将该数组写入存储并将其拉回,或者将其写入服务器API并将其恢复。老实说,单身人士可能是最简单的。 – WIllJBD

+0

啊,有趣。我没想过要用单身。因此,我想我想要序列化列表以将其永久存储在这些事件上:下载广告后,在用户“保存”其下载的项目编辑之后,更正? – user5243421

相关问题