2013-01-20 91 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

相關問題