2011-07-04 8 views
2

データベースを持たなくても、アプリケーション内にリストを保存することは可能ですか? それ以外の場合は、単純なリストを保存する最も簡単な方法は何ですか?アンドロイドにデータベースなしで保存することは可能ですか?

+3

を言うことができますファイル。何が問題なの? –

+2

リストには何が入っていますか?文字列?それはあなたが望むものであれば、ファイル内の文字列を別々のファイルに保存するだけで簡単です。そのオブジェクトが – RMT

答えて

3

私はそれはあなたが作業しているリストの内容に依存だと思うから、多くのストレージ能力のほんの数。 Listに「Simple-Objects」(整数またはその他のオブジェクトのリストが少数のメンバーしかないリスト)のように格納されている場合は、Androidに組み込まれているSharedPrefenrencesを使用できます。彼らには鍵と価値が必要です。それはシンプルに保つためにポイントを言うことができます - - あなたのリストの5つのオブジェクトが含まれているのであれば、あなたは再びこれを受け取るために

SharedPreferences.Editor editor = getSharedPreferences("YourListName", MODE_PRIVATE).edit(); 
for(int i = 0; i < YOUR_LIST.count() ; i++){ 
    Point p = YOUR_LIST.get(i); 
    editor.putInt("Element" + i + " X", p.x); 
    editor.putInt("Element" + i + " Y", p.y); 
} 
editor.commit(); 

ようにそれらを保存することができ、あなただけのあなたが作成することで、データを常に格納することができます

SharedPreferences prefs = getSharedPreferences("YourListName", MODE_PRIVATE); 
Map<String, ?> map = prefs.getAll(); 
+0

偉大ですが、私は変数 'p'で何をすべきでしょうか? – coffee

+0

おっと、申し訳ありません、これはタイプミスでした。私はそれがPointのListであると仮定しているので、Point Objectはint x、yの2つのメンバーを持つため、p.xとp.yに修正しました。 Map からへのマップを修正して明確にしました。だから、ポイントを置き換え、自分のオブジェクトを内部に入れてください。 –

+0

ああ!この場合、Pointオブジェクトのキー "Element2 X"を検索する必要があります。 'prefs.getAll()'はマップを返すので、この 'Map map = prefs.getAll()'はうまくいかないと思います。 – coffee

1

を見て、いくつかの方法があります。 Here javaのWebページからの技術記事があります。キーと値のペアで

Shared Preferences ストアプライベートプリミティブデータ:あなたがそこに必要なすべての情報を持っている、開発者ゾーンに見てみましょう :

+0

@ mathiasnjとCinquoをシリアル化しようとするとします。 [Internal Storage](http://developer.android.com/guide/topics/data/data-storage.html#files内部)のようです。それは同じことですか? – coffee

+1

Internal Storageはアプリケーションのプライベートエリアに書き込むことができますが、アプリケーションが必要な場合にはおそらくこれが必要になるかもしれません。私がシリアライゼーションを参照するとき、特定の形式のオブジェクトをファイル内の別の形式にマップ(および書き込み)できるメソッドがあることを意味します(デシリアライズは逆の操作になります)。フォーマットは任意のものにすることができます。この場合、要素のリストであれば、ファイル行ごとに1つの要素を置くことができます。 pickleing(cPickleライブラリ)のようなものを評価することもできます。 – Cinquo

+0

ありがとうございました。 – coffee

3

は、AndroidでData Storageのためのいくつかの方法があります。

Internal Storage デバイスメモリにプライベートデータを格納します。

External Storage 共有外部ストレージに公開データを格納します。

SQLite Databases プライベートデータベースに構造化データを格納します。

Network Connection 自分のネットワークサーバーでデータをWebに保存します。

あなたのニーズに最も適したストレージを見つけたら、自由にお気軽にお問い合わせください。

+0

私はオブジェクトのリストを持っています(プリミティブではありません)、私のアプリケーションが殺されたとしてもそれらを保存したいと思います。だから、 'SQLite Databases'が最良の選択肢だと思います。 – coffee

+0

正確には、sqliteデータベースをお勧めします。また、http://ormlite.com/sqlite_java_android_orm.shtmlのようなORMを使用するオプションも考慮する必要があります。 – matiasnj

3

データベースには複数の永続性の選択肢があります。いくつかの(Javaの持つアクセスを)名前を付けるには、することができます

  • 使用、単純なファイル(serialisationで、または他のコンフィグフォーマット - その場合には、commons configurationを見てみましょう)
  • XMLシリアル化と書き込みXMLコンテンツ( - 再び - ?!?または他のメカニズム、XStreamJAXB、...)のような
  • ように使用するすべてのNoSQLストレージ(グラフDB、ドキュメントDB、及び、...)
  • 使用有病率層(space4jをのような)
  • transactionnal datの使用(JDBMのような)店舗名へ

のJava

+1

Space4Jでは、4種類のインデックスを使用してインデックスを作成できます。見てみましょう:http://forum.space4j.org/posts/list/5.page – TraderJoeChicago

関連する問題