0

我的应用程序的功能可以模仿wanelo之类的东西。

用户将在一个活动中输入他们想要购买的搜索词。他们将获得与该搜索词匹配的项目列表。因此,ListView将包含Items。AnItem有很多属性,主要有:

  • id- 对应Item于数据库中的 id
  • date_modified- 时间戳知道是否Item已更新
  • remote_directoryItem- 指向的资产(如图标和其他图像)的基本目录的 URL 。URL 的格式如下:http://my.domain.com/items/a1bc234d/wherea1bc234d是随机生成的,由date_modified.
  • remote_dir_name- 的子串remote_directory。从上面的示例中,该值将是a1bc234d

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

  • 首先,我想将 s 添加到代表用户“下载”的 s 的Item不同位置。ListViewItem
  • 然后,我想实际下载所有的Item数据:描述,所有资产remote_directory。这些东西被存储在我的应用程序的内部存储文件夹中remote_dir_name/data/data/my.app.package.name/files/a1bc234d/

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

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

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

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

4

1 回答 1

1

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

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

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

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

下载应该在 AsyncTask 中,您将需要使用其中的@Override publishProgress()一部分,以便您可以更新下载栏的状态。

请原谅我的任何失误或错误,我刚醒来。

于 2013-01-20T19:37:06.183 回答