[英]How to save unique picture per ListItem Android
我的問題是這個(不要讓該段嚇到您,我的問題很簡單,我相信 ):
在MainActivity(A)
,我有一個listView
。 當我單擊listView
的項目時,我轉到第二個activity(B)
。 在activity B
,我有一個允許用戶拍照的按鈕。 現在,我將此圖片保存在文件名下。 由於我希望每個listItem的圖片都是唯一的,因此我將圖片的文件名作為該項目的位置。 例如,如果我單擊列表中的item#1
,則相應圖片的名稱為"1"
。 除了刪除項目外,這一切都很好。 然后,當我在同一位置添加另一個項目時,我的代碼將加載該項目的現有圖片。 例如,如果我為item2,
保存了一張名為'2'
的item2,
那很好。 當我刪除該條目並添加另一個項目(即新的item2)時,我的代碼檢查:“圖片名稱'2'
存在嗎?”。 如果是,則為此條目設置圖片。 顯然,這是一個不同的條目,我不希望發生這種情況。 可能我可以將圖片和項目一起刪除,但是我不知道如何執行此操作。
我希望我能很好地解釋我的邏輯。 我使用該職位的唯一原因是因為那是我所能找到的關於該物品的唯一獨特之處。 順便說一句(不確定是否相關),我將項目位置作為Activity A
和Activity B
之間意圖的額外傳遞。
如何解決此問題或使用解決方法? 謝謝!
編輯1:
Facepalm。 通過查看注釋,我意識到刪除它(如我之前所述)^^是實現此目的的方法。 有人可以告訴我該怎么做嗎?
這是我用來保存圖像的代碼:
private void setImage() {
if (loadPicture(getIntent().getStringExtra("position"), bitmap) != null) {
// Toast.makeText(this, "not null", Toast.LENGTH_SHORT).show();
imageView.setImageBitmap(loadPicture(
getIntent().getStringExtra("position"), bitmap));
}
}
private void savePicture(String filename, Bitmap b, Context ctx) {
try {
// ObjectOutputStream bos;
FileOutputStream out;// = new FileOutputStream(filename);
out = ctx.openFileOutput(filename, Context.MODE_WORLD_READABLE);
// bos = new ObjectOutputStream(out);
b.compress(Bitmap.CompressFormat.JPEG, 40, out);
if (b.compress(Bitmap.CompressFormat.JPEG, 40, out) == true)
// Toast.makeText(this, "returned true",
// Toast.LENGTH_LONG).show();
// bos.flush();
// bos.close();
out.close();
} catch (Exception e) {
e.printStackTrace();
}
}
干杯。
答案是在問題中:刪除項目時刪除文件。 File.delete()
是您可能正在搜索的方法。 但是,如果該項目不是列表中的最后一個,則還必須重命名其他文件。
另一種更簡單的方法是使用一個簡單的計數器來命名文件,並借助Map
將該列表中的每個項目與文件名相關聯。
我不想踩JB Nizet的答案,但我會提出另一個建議。 使用SimpleCursorAdapter和SqliteDatabase,您可以避免管理任何類型的數字鍵。 只需將數據庫文件的路徑以及其他相關信息保存在用戶手中 ,設置ViewBinder ,就可以開始比賽了。 活頁夾是一種非常靈活的方式來呈現數據,甚至有條件地呈現View對象。
解決此問題的方法是,每次添加項目時都增加一個計數器,然后將該計數器保存在內部存儲器中。 這樣,它不是基於位置的,並且在我刪除項目時也不會弄亂。 我希望在我對應用程序進行修改時,這種方法繼續有效。 感謝大家的幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.