0

次のようなオブジェクトのArrayListがあります

ArrayList<DataCCHeading>CC1=new ArrayList<DataCCHeading>();
ArrayList<DataCCHeading>hd=new ArrayList<DataCCHeading>(result);

for (DataCCHeading dataCCHeading : hd)
{
    if(dataCCHeading.Ownername==TAG_CC1HeadingData)
    {
        CC1.add(dataCCHeading);
    }
}

外部ストレージSDCardを保存して、後でそのデータを取得できるようにするためにやりたいことは、サーバーから再度要求する必要があることです。私の質問は、オブジェクトの Arraylist を保存して SDCard から取得する方法です。

4

3 に答える 3

1

いくつかのオプションがあります。

Javaシリアル化:クラスにSerializableを実装させ、適切なシリアル化および逆シリアル化ロジックを作成するだけで、それらをファイルに書き込んで読み戻すことができます。このチュートリアルを参照してください:http ://www.tutorialspoint.com/java/java_serialization.htm

JSONシリアル化:ライブラリリストGSONを使用します。オブジェクトをテキストファイルとしてJSON配列にシリアル化し、ファイルに保存できます。次に、それをJSON文字列として読み戻し、GSONライブラリを再度使用して、オブジェクトの配列リストに変換し直します。

組み込みのSQLiteDatabaseを使用する:オブジェクトをデータの行としてsqliteデータベースに保存します。クラスメンバーは、テーブルの列として格納されます。それらを配列に戻すには、テーブルからすべての行を取得し、オブジェクトを1つずつ作成して、それらを配列リストに追加します。

于 2012-07-13T20:00:20.270 に答える
0

おそらく、最初に何かにシリアライズしたいと思うでしょう (例: JYaml を使用)。

その後、簡単にデシリアライズ/シリアル化でき、スペース効率が非常に高くなります。

于 2012-07-13T19:52:23.433 に答える
-2

あなたはこのようにします:

  //use getExternalStorageState to determine if there is an sd card
  if (Environment.getExternalStorageState() == null) {
                    directory = new File(Environment.getDataDirectory()
                            + "/RobotiumTestLog/");
                    photoDirectory = new File(Environment.getDataDirectory()
                            + "/Robotium-Screenshots/");
                    /*
                     * this checks to see if there are any previous test photo files
                     * if there are any photos, they are deleted for the sake of
                     * memory
                     */
                     //if the directory exists, delete files in directory
                    if (photoDirectory.exists()) {
                        File[] dirFiles = photoDirectory.listFiles();
                        if (dirFiles.length != 0) {
                            for (int ii = 0; ii <= dirFiles.length; ii++) {
                                dirFiles[ii].delete();
                            }
                        }
                    }
                    // if no directory exists, create new directory
                    if (!directory.exists()) {
                        directory.mkdir();
                    }

                    // if phone DOES have sd card
                } else if (Environment.getExternalStorageState() != null) {
                    // search for directory on SD card
                    directory = new File(Environment.getExternalStorageDirectory()
                            + "/RobotiumTestLog/");
                    photoDirectory = new File(
                            Environment.getExternalStorageDirectory()
                                    + "/Robotium-Screenshots/");
                    if (photoDirectory.exists()) {
                        File[] dirFiles = photoDirectory.listFiles();
                        if (dirFiles.length > 0) {
                            for (int ii = 0; ii < dirFiles.length; ii++) {
                                dirFiles[ii].delete();
                            }
                            dirFiles = null;
                        }
                    }
                    // if no directory exists, create new directory to store test
                    // results
                    if (!directory.exists()) {
                        directory.mkdir();
                    }
                }

それはかなり簡単なプロセスです。ここで行ったのは、SDカードがあるかどうかを確認することでした。SDカードがある場合はディレクトリを検索し、ディレクトリがない場合は作成します。ディレクトリがあり、コンテンツが含まれている場合は、それを消去します。あなたはそれをすべてする必要はありません。必要に応じて、を使用できますEnvironment.getExternalStorageDirectory()。これでSDカードが取得されます。そこからを作成しbufferedWriterて書き込みます。<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />マニフェストも追加する必要があります。ご不明な点がございましたら、お気軽にお問い合わせください。

これがお役に立てば幸いです。

于 2012-07-13T19:55:13.630 に答える