如何在列表视图之间存储和传递信息

时间:2013-01-20 19:17:45

标签: android android-listview

我的应用的功能可以在wanelo之后建模。

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

  • id - 对应于数据库中Item的ID
  • date_modified - 了解Item是否已更新的时间戳
  • remote_directory - Item资源基本目录的网址,如图标和其他图片。网址格式如下:http://my.domain.com/items/a1bc234d/其中a1bc234d是随机生成的,date_modified播种。
  • remote_dir_name - remote_directory的子字符串。从上面的示例中,此值为a1bc234d

从搜索结果列表中,用户可以标记要在以后查看的项目。这将引发一些事情:

  • 首先,我想将Item发布到代表用户“已下载”的ListView的其他Item
  • 然后,我想实际下载所有Item的数据:说明,remote_directory中的所有资产。这些内容会将我应用的内部存储空间存储在文件夹remote_dir_name中:/data/data/my.app.package.name/files/a1bc234d/

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

此“已下载”ListView对应不同的活动,并且会显示一个列表项,其中显示Item下载状态的进度条。此外,此ListView应该是可编辑的:use应该能够删除并重新排序列表中的Item

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

我在确定如何存储Item下载列表方面遇到了很多麻烦。 “下载”ListView需要知道何时更新列表项的进度条(如果已下载)。我认为将Item存储在数据库中有点过分,因为我将不断更新行的列,直到下载完成。我应该如何在这两个ListView之间传递此下载状态信息?

1 个答案:

答案 0 :(得分:1)

我不完全确定我在这里抓住整个画面,但在我看来你需要两个ArrayList字段。

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

然后您需要做的是为DownloadListView创建自己的自定义ListAdapter并创建您自己的自定义download_item.xml,您将在ListAdapter内部进行膨胀。在您的情况下,听起来这个download_item.xml将包含textview和progressbar,并且需要包含(或顶层)布局集来包装内容。

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

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

原谅我任何错误的视线或错误,我只是醒了。

相关问题