2015-02-10 28 views
0

我是一名初學者的android開發人員,我正在尋找一些保存文件的幫助。在Google的開發者文檔中,他們聲明使用內部存儲來保存文件。 我的目標是當前創建一個可以根據需要保存和訪問的數組列表。試圖在不同的活動中保存和訪問ArrayList Android

目前,我有一個活動,用戶可以將數據輸入到字段中,並且會使用該數據創建一個新對象。我試圖將這些數據添加到數組列表中,然後保存。但是,我需要在首次製作應用程序時訪問的MainActivity中檢查ArrayList。主要活動需要檢查一個ArrayList是否已經存在,或者是否需要創建一個新的ArrayList。然後,該數組列表需要被髮送(通過Intents,已經理解該部分)到所有對數組列表進行操作的活動,然後將其發送回其保存的主要活動。

任何可以提供的幫助將無限讚賞。如果不清楚,我很抱歉,我會盡力澄清。任何提高我的Android技巧的提示也將不勝感激。

謝謝!

+0

當你說「保存」,你說什麼樣的毅力?記憶?內部存儲器?你想保存數據多久? – Quanturium 2015-02-10 23:21:48

+0

我想保持數據幾乎永久,基本上直到用戶刪除文件。我希望能夠定期編輯數組列表。 – shivamPar 2015-02-10 23:23:14

回答

0

你需要做的第一件事就是將文件加載到你的ArrayList中。例如,您可以使用AsyncTask來完成此操作。這裏有更多的信息:http://developer.android.com/guide/components/processes-and-threads.html

其次,如果你的ArrayList很大,我會建議擴展Application類並保存你的ArrayList的實例,而不是通過Intent發送它。這樣每個活動(和你的應用程序的其他組件)都可以訪問它。當您通過intent發送數據時,日期將被封送/解封,這可能需要很長的CPU時間並且會導致您的活動轉換。

+0

對不起,我不明白你的意思是將文件加載到數組列表中。我試圖將數組列表存儲爲一個文件。基本上製作一個對象PEOPLE的數組列表,然後存儲該數組列表以供以後訪問。再次感謝! – shivamPar 2015-02-10 23:33:17

+0

你可以添加你試圖存儲/加載文件的代碼嗎? – Quanturium 2015-02-10 23:35:15

+0

對不起,但我沒有寫太多的代碼。我仍然試圖弄清楚文件輸出和輸入的順序,並且仍然試圖理解它們是如何工作的。 – shivamPar 2015-02-11 00:23:29

0

其實,它取決於你想如何保存這些數據。它是否在文件上(保存在存儲卡上),但可以被用戶刪除。

如果你不想讓用戶訪問這些DATAS您有: - SQLite database - Shared preferences

如果ArrayList中並不需要存儲獲得進一步的用途,你也可以使用單身類(這是非常容易使用)。

public class Singleton { 
private static Singleton mInstance = null; 

private ArrayList<Integer> mArray; 

private Singleton(){ 
mArray = new ArrayList<Integer>(); 
} 

public static Singleton getInstance(){ 
if(mInstance == null) 
{ 
mInstance = new Singleton(); 
} 
return mInstance; 
} 

public ArrayList<Integer> getArray(){ 
return this.mArray; 
} 

public void setArray(ArrayList<Integer> value){ 
mArray = value; 
} 

public void addValue(Integer value){ 
mArray.add(value); 
} 
} 

或者使用額外的意圖是這樣的:

Intent i = new Intent(this,name.class); 
Bundle b = new Bundle(); 
b.putIntegerArrayListExtra(String name, ArrayList<Integer> value); 
i.putExtra(String name,b); 
startActivity(i); 

Bundle b = getIntent().getExtra().putParcelableArrayListExtra(String name); 
+0

我確實希望用戶只能從應用程序內編輯陣列列表。此外,我需要每次打開應用程序時都要存儲和訪問數據。就像我需要在應用程序的每個部分的每個活動中訪問那個數組列表一樣。 – shivamPar 2015-02-11 00:22:36

+0

所以使用SQLite數據庫。 ArrayList只是一個對象來操縱從SQLite數據庫中檢索數據。 – marshallino16 2015-02-11 16:39:46

相關問題