Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/186.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何在列表视图之间存储和传递信息_Android_Android Listview - Fatal编程技术网

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

Android 如何在列表视图之间存储和传递信息,android,android-listview,Android,Android Listview,我的应用程序的功能可以模仿类似的东西 用户将在一个活动中输入他们想要购买的搜索词。他们将获得与该搜索词匹配的项目列表。因此,列表视图将包含项s。项具有许多属性,主要属性包括: id-对应于数据库中项的id date\u modified-时间戳以了解项目是否已更新 remote_directory-指向项的资源(如图标和其他图像)的基本目录的URL。URL的格式如下:http://my.domain.com/items/a1bc234d/其中a1bc234d是随机生成的,由date\u mod

我的应用程序的功能可以模仿类似的东西

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

  • id
    -对应于数据库中
    项的id
  • date\u modified
    -时间戳以了解
    项目是否已更新
  • remote_directory
    -指向
    项的资源(如图标和其他图像)的基本目录的URL。URL的格式如下:
    http://my.domain.com/items/a1bc234d/
    其中
    a1bc234d
    是随机生成的,由
    date\u modified
    作为种子
  • remote\u dir\u name
    -远程目录的子字符串。根据上面的示例,该值将为
    a1bc234d
从搜索结果列表中,用户可以标记稍后要查看的项目。这将引发几件事:

  • 首先,我想将
    项目
    添加到另一个
    列表视图
    ,该列表视图表示用户“下载”的
    项目
  • 然后,我想实际下载
    项的所有数据:description,远程目录中的所有资产。这些东西被存储在我的应用程序的内部存储文件夹中
    remote\u dir\u name
    /data/data/my.app.package.name/files/a1bc234d/
这些“下载”的项目意味着可以在脱机模式下查看

此“已下载的”
ListView
对应于不同的活动,并具有显示
项目的下载状态进度条的列表项。此外,此
列表视图应可编辑:use应能够删除列表中的
项并重新排序

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


我很难弄清楚如何存储下载的
项的列表。“下载”
ListView
需要知道在下载列表项时何时更新其进度条。我认为将
存储在数据库中有点过分,因为在下载完成之前,我会不断更新行的列。如何在这两个
ListView
s之间传递此下载状态信息?

我不完全确定我是否掌握了这里的全部情况,但在我看来,您需要两个ArrayList字段

List<Item> downloadedItems = new ArrayList<Item>;
List<Item> searchItems = new ArrayList<Item>;
List downloadedItems=newarraylist;
List searchItems=新的ArrayList;
然后,您需要做的是为DownloadListView创建您自己的自定义ListAdapter,并创建您自己的自定义download_item.xml,您将在ListAdapter中充气。在您的情况下,这个download_item.xml似乎由一个文本视图和一个进度条组成,并且需要包含(或顶层)布局集来包装内容

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

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


请原谅我的错误,我刚刚醒来。

所以,我想我想知道ArrayList应该在哪里。我编辑了我的问题,以包括downloadItems列表视图在一个活动中,searchItems列表视图在另一个活动中。通常,用户会在开始downloadedItems活动之前进行搜索。downloadedItems活动应如何检索ArrayList?从searchItems活动?这对我来说有点奇怪。。。我想我认为downloadedItems应该存在于中心位置,而不是作为活动的一部分?让我知道我是不是搞错了!有几件事。这里可以用单身汉。或者您可以将列表反序列化为json字符串并传递,或者将数组写入存储器并将其取出,或者将其写入服务器api并将其取回。老实说,单身可能是最容易的。啊,很有趣。我不想用单身汉。因此,我想象我想序列化列表,将其持久存储在这些事件中:在下载广告后,在用户“保存”他们的下载编辑后,对吗?我让下载在后台线程上工作。每个项目一个下载线程。您指定AsyncTask来执行此操作的原因是什么?这是一种最简单的管理方法,并且具有一些很好的特性,如onpostexecute onpreexecute和publishprogress。它还将自动排队,并在它们到达时完成它们。这只是我个人的事。我倾向于在游戏中只使用自己的线程。