我的应用的功能可以在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
之间传递此下载状态信息?
答案 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()
部分,以便您可以更新下载栏的状态。
原谅我任何错误的视线或错误,我只是醒了。