1

EditView を介してユーザーの入力を保存するために、Save/Load Preferences を使用しようとしていました。ただし、現在のコードは、ユーザーが入力した最後の文字列のみを保存します。したがって、アプリを再入力すると、ListView の唯一の文字列は、ユーザーが最後に入力した文字列です。

どうすればこれを修正できますか?

以下の編集済みコード:

addButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            String task = display.getText().toString();


                adapter.add(task);
                adapter.notifyDataSetChanged();

                JSONArray array = new JSONArray();
                array.add(task);


                SavePreferences("LISTS", array.toString());
        }
    });
}

protected void SavePreferences(String key, String value) {
    // TODO Auto-generated method stub
    SharedPreferences data = PreferenceManager.getDefaultSharedPreferences(this);
    SharedPreferences.Editor editor = data.edit();
    editor.putString("LISTS", value);
    editor.commit();


}

protected void LoadPreferences(){
    SharedPreferences data = PreferenceManager.getDefaultSharedPreferences(this);
    String dataSet = data.getString("LISTS", "");


    adapter.add(dataSet);
    adapter.notifyDataSetChanged();

    ArrayList<String> dataSetarrlist = new ArrayList<String>();
    dataSetarrlist.add(dataSet);
    adapter = new ArrayAdapter<String>(this, 
                         android.R.layout.simple_list_item_multiple_choice,dataSetarrlist);
    lv.setAdapter(adapter);
4

2 に答える 2

0

あなたの問題は、同じキー「LISTS」に書いていて、常に最後の値を取ることです。別のキーを使用するか、「LISTS」キーから以前の値を取得し、区切り文字を追加して、新しい設定を追加する必要があります。次に、LoadPReferences で String.split(pattern) を使用してすべての値を取得します。

于 2013-06-26T16:55:58.877 に答える
0

同じキーを上書きしていませんか?

SavePreferences("LISTS", task);

editor.putString(キー、値);

SharedPreferences のキー「LISTS」に常に書き込み、以前の値を上書きします。

現在保存されている値を文字列に取得し、新しい値を追加するようにしてください。

並べ替え:

String dataset = loadPreferences();
SavePreferences("LISTS",dataset+task);

希望する保存形式に応じて。

- 例 -

protected void SavePreferences(String key, String value) {
// TODO Auto-generated method stub
   SharedPreferences data = PreferenceManager.getDefaultSharedPreferences(this);
   JSONArray array = new JSONArray(data.getString(key,"");
   SharedPreferences.Editor editor = data.edit();
   editor.putString(key, value);
   editor.commit();
}


protected void LoadPreferences(){
   SharedPreferences data = PreferenceManager.getDefaultSharedPreferences(this);
   JSONArray dataSet = new JSONArray(data.getString("LISTS", "None Available");)
   for(int i = 0; i<dataSet.length; i++)
     adapter.add(dataSet.getString(i);
   adapter.notifyDataSetChanged(); // You don't need this if you aren't overriding the Adapters 'add' method.
}
于 2013-06-26T16:53:08.290 に答える