2012-05-30 55 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

相关问题