2011-09-12 12 views
1

私の履歴オブジェクトは2つのフィールド(id + name)しか持っていません。私はそれらを救う必要があります。私はsharedpreferencesを使用しました。これは、キーと値のペアを保存するのに完璧であるためです。ファイルが保存されている場所に変更する可能性はありません。私はappのユーザーにすべての履歴エントリを削除する可能性を与えたいので、sharedprefフォルダに保存したくありません。私は、どのファイルが履歴ファイルであり、どのファイルがアプリケーションで使用されている環境設定ファイルであるかをチェックする必要があります。これは覚えていませんが、汚れたイモです。一方、私の履歴ファイルはsharedprefフォルダにあるべきではありません。彼らはそのフォルダ内で何もしません。アンドロイド - 履歴とオートコンプリートの値を保存する場所

もう一つの可能​​性はxmlとして内部ストレージにデータを保存することです。私はシリアライザとパーサーを書く必要があります。

3つ目の可能性(私はこの質問を書いたことを思い出しました)は、Java Propertiesを介してそれを保存することです。これはおそらく最も簡単な解決策です。そのようなsharedpref

最後の可能性はsqliteに格納することです。私は知らない。私のデータはとても小さいです。私はそれを格納するためにdatabaeを使用しますか?

私の質問は単純です。何を使用することをお勧めします。なぜですか?あなたは何を使うのですか?同じ質問はオートコンプリート値に属します。 idは、ユーザーがテキストフィールドに入力した値を保存するようにします。どこでそれらを救うのですか?あなたはそのようなデータをどこに保存しますか?事前

答えて

0

THXあなたは次のようにsharedpreferencesファイルを作成します使用して、歴史のための個別のsharedpreferencesファイル(例えば)Context.getSharedPreferences("history")を作成することができます。

/data/data/com.your.package.name/shared_prefs/history.xml 

しかし、私はすべてのsharedpreferencesファイルが/data/data/com.your.package.name/shared_prefs/に作成されることを確信しています。私はあなたが場所を変更できるとは思わない。

+0

しかし、私は1つの履歴ファイルだけではありません。私はいくつか持っている。たぶん1.maybe 20 ..はユーザーに依存します。ユーザーが特定の製品を見ているたびに、履歴ファイルのエントリを追加する必要があります。はい。共有元の場所は変更できません! – imcurious

+0

したがって、ユーザーが関連製品を見ているときに、適切な名前の一連の履歴ファイルを作成するだけです。 – Torid

0

私はあなたの目的を誤解しているかもしれませんが、このようなものについては、java.io.BufferedWriterのBufferedWriterを使って各オブジェクトに新しいファイルを書きます。同様に、BufferedReaderでデータを読み取ることができます。コードは次のようなものになります。この例では

public static void save(FileIO files){ 
      BufferedWriter out = null; 
      try{ 
       //use a writer to make a file named after the object 
       out = new BufferedWriter(new OutputStreamWriter(
         files.writeFile(objectSomething))); 
       //the first line would be ID 
       out.write(Integer.toString(objectID)); 
       //second line would be the name 
       out.write(objectName) 
       //Theres two possible IOexceptions, 
       //one for using the writer 
       //and one for closing the writer 
      } catch (IOException e) { 
      } finally {try { 
       if (out != null) 
        out.close(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
      } 

を、私はファイルの文字列名前として「objectSomething」を使用している、オブジェクトIDとobjectNameには、あなたのファイルが含まれていることを、それぞれint型と文字列です。

かなり簡単、このデータを読むために:ここ

public static void load(FileIO files) { 
     BufferedReader in = null; 
     try { 
      // Reads file called ObjectSomething 
      in = new BufferedReader(new InputStreamReader(
        files.readFile(ObjectSomething))); 

      // Loads values from the file one line at a time 
      varID = Integer.parseInt(in.readLine()); 
      varName = in.readLine(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } finally { 
      try { 
       if (in != null) 
        in.close(); 
      } catch (IOException e) { 
      } 
     } 
    } 

、私はあなたのアプリケーション全体で、あなたのコードでそれらを必要な場合に使用する、このクラス内のローカル変数としてvarIDとVARNAMEを使用しました。

関連する問題