2012-05-30 60 views

回答

4

讓您的物品存儲在LinkedList實施Parcelable,所以你可以把它們放在你的bundle。中onSaveInstance您可以用把你的對象在bundle

bundle.putParcelableArrayList ("key", list); 

,並在onRestoreInstanceStateActivity獲取數據從bundle回用:

bundle.getParcelableArrayList(); 
3

我通常不提供完整的答案,但因爲它是在我的剪貼板...

這應該與任何列表實施工作。

此外,您需要定義/交換Constants.EXTERNAL_CACHE_DIR,並可能想使用UI-Thread以外的其他方式進行生產。

public static void persistList(final List<String> listToPersist, final String fileName) { 
    FileWriter writer = null; 
    BufferedWriter bufferedWriter = null; 
    File outFile = new File(Constants.EXTERNAL_CACHE_DIR, fileName); 
    try { 
     if (outFile.createNewFile()) { 
     writer = new FileWriter(outFile); 
     bufferedWriter = new BufferedWriter(writer); 
     for (String item : listToPersist) { 
      bufferedWriter.write(item + "\n"); 
     } 
     bufferedWriter.close(); 
     writer.close(); 
     } 
    } catch (IOException ioe) { 
     Log.w(TAG, "Exception while writing to file", ioe); 
    } 
    } 

    public static List<String> readList(final String fileName) { 
    List<String> readList = new ArrayList<String>(); 
    try { 
     FileReader reader = new FileReader(new File(Constants.EXTERNAL_CACHE_DIR, fileName)); 
     BufferedReader bufferedReader = new BufferedReader(reader); 
     String current = null; 
     while ((current = bufferedReader.readLine()) != null) { 
     readList.add(current); 
     } 
    } catch (FileNotFoundException e) { 
     Log.w(TAG, "Didn't find file", e); 
    } catch (IOException e) { 
     Log.w(TAG, "Error while reading file", e); 
    } 
    return readList; 
    } 
+0

爲什麼要使用一個文件來延續簡單的數組?它可以更容易地存儲在SharedPreferences中。 –

+0

由於Parcelable相當詳細,必須爲您想要堅持的每個類實施。 – keyboardsurfer

+0

是的。但保留對象更容易。在這種情況下,你正在持久化字符串。你會如何採取這種方法,並堅持更復雜的對象? –

0

你有沒有嘗試共享preferneces ..?當應用程序即將退出時,使用共享偏好進行保存,並在應用程序啓動時再次加載該偏好。

+0

我認爲用於小數據的共享首選項他擁有完整的鏈接列表 – MAC

+0

您的意思是減少數據量?您可以將任何對象保存爲共享首選項。 – Rookie

相關問題