2017-05-29 6 views
0

私はカスタムアダプタとgroceriesと呼ばれるArrayList<String>を持っています。sharedPreferencesで色と取り消し線のテキストを保存

これにより、ユーザはそこに何かを置くか、削除するたびにリストビューを保存する私の方法であって、

public void saveGroceriesList() { 
    sharedPreferences = getContext().getSharedPreferences("com.me.application", Context.MODE_PRIVATE); 
    HashSet<String> set = new HashSet(groceries); 
    sharedPreferences.edit().putStringSet("Groceries", set).apply(); 
} 

そして、ここで私は、ListViewコントロールのテキスト取り消し線や変色のonClickを設定します。

list_contentがある
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 

     @Override 
     public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 

      list_content = (TextView) view.findViewById(R.id.list_content); 

      if (!isChecked){ 

       isChecked = true; 
       list_content.setPaintFlags(list_content.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG); 
       list_content.setTextColor(Color.parseColor("#a7a7a7")); 
       saveGroceriesList(); 

      } else { 

       isChecked = false; 
       list_content.setPaintFlags(list_content.getPaintFlags() & (~ Paint.STRIKE_THRU_TEXT_FLAG)); 
       list_content.setTextColor(Color.parseColor("#000000")); 
       saveGroceriesList(); 

      } 

     } 
    }); 

リストビュー用の私のTextView。問題は、saveGroceriesList();メソッドが色を保存しないことです。 sharedPreferencesを使用して色と取り消し線のテキストを保存するにはどうすればよいですか?

答えて

2

あなたがセットにカラー値を追加しているところ、私は見ることができない、私はそれが最善の解決策という問題

+0

別のTextViewを設定するにはどうすれば設定できますか? – Zeo

+0

listviewからallDataを取得して保存しますか? –

1

だと思い、これまで私見により、より優れたデータ・ストレージ・モデルを使用することです。たとえば、さまざまなプロパティ(name、checked)のカラムを持つSQLiteデータベースを使用できます。また、データをJSONファイル、XMLファイル、CSVファイル、または他の形式のシンプルファイルに保存することもできます。

どんな理由であれ、あなたがSharedPreferencesを使用することを確信している、場合、あなたは可能性:

  • 名前を知っているGroceryItemクラスを作成し、状態情報
  • をチェックするには、あなたですArrayList<GroceryItem>をホールドインメモリデータモデルの表現は
  • 使用Gson、ジャクソン、または他のいくつかのJSONパーサーはへとString表現からArrayList<GroceryItem>を変換する
  • StringSharedPreferencesに保存する
+0

私はSQLiteデータベースで作業していませんが、私はあなたの答えを考慮に入れて試してみます。ありがとう! – Zeo

関連する問題