Надеюсь, это поможет вам
SharedPreferences sharedPrefs = getSharedPreferences("SharedPreferences_Name", Context.MODE_PRIVATE);
private ImageView bookmark;
bookmark = (ImageView) findViewById(R.id.imageView_bookmark_readIt);
private boolean bookmarking = sharedPrefs.getBoolean("bookmarking",true);//To get value that saved in SharedPreferences
if(bookmarking){
bookmark.setImageResource(R.drawable.ic_bookmarked_blue);
}
else{
bookmark.setImageResource(R.drawable.ic_bookmark);
//Toast.makeText(getApplicationContext(), "Changed", Toast.LENGTH_LONG).show();
}
bookmark.setOnClickListener(new View.OnClickListener(){
// private boolean bookmarking = true;
public void onClick(View v){
if(bookmarking){
bookmark.setImageResource(R.drawable.ic_bookmarked_blue);
bookmarking=false;
SharedPreferences.Editor editor = getSharedPreferences("SharedPreferences_Name", 0).edit();
editor.putBoolean("bookmarking", bookmarking);
editor.apply();
}
else{
bookmarking=true;
bookmark.setImageResource(R.drawable.ic_bookmark);
//Toast.makeText(getApplicationContext(), "Changed", Toast.LENGTH_LONG).show();
SharedPreferences.Editor editor = getSharedPreferences("SharedPreferences_Name", 0).edit();
editor.putBoolean("bookmarking", bookmarking);
editor.apply();
}
});
То, что Вы действительно хотите, является B-деревом. Это - структура первичных данных, которую использует база данных. Это разработано, чтобы позволить Вам эффективно подкачать части структуры данных к и от диска по мере необходимости.
Я не знаю ни о каких широко используемых, высококачественных автономных реализациях B-дерева для C#.
Однако простой способ добраться нужно было бы использовать базу данных Sql Compact. Компактный механизм Sql будет работать незавершенный, таким образом, Вам не будет нужно отдельное сервисное выполнение. Это даст Вам B-дерево, но без всех головных болей. Можно просто использовать SQL для доступа к данным.
Правовая оговорка - я собираюсь указать на Вас на продукт, в который я вовлечен.
Я все еще работаю над стороной веб-сайта вещей, таким образом, нет большого количества информации, но Серийный убийца был бы подходящим вариантом для этого. У меня есть примеры, которые используют сериализацию .NET (может предоставить примеры), таким образом пишущий персистентный кэш карты для .NET, сериализуемые объекты были бы тривиальны.
Достаточно бесстыдный сам продвижение - если заинтересовано, используйте ссылку контакта на веб-сайт.
Вот реализация B-дерева для .NET: http://bplusdotnet.sourceforge.net/
Это очень похоже на мой вопрос
Поиск простой автономной персистентной реализации словаря в C#
Я не думаю библиотека, которая точно соответствует тому, что Вы хотите, существует, возможно, ее время для нового проекта на GitHub.
можно использовать блок приложений MS с находящимся на диске решением для кэша
Попытайтесь смотреть на NCache здесь также.
Я не аффилирован с этой компанией. Я только что загрузил и протестировал их бесплатную специальную версию.
У меня есть частично JAVA-приложение poprted EhCache к.NET, распределенное кэширование еще не реализовано, но на единственном узле, всей исходной передаче UnitTests. Полный OpenSource:
http://sourceforge.net/projects/thecache/
Я могу создать двоичное отбрасывание, если Вам нужно оно (только исходный код является availble теперь),
Я следовал бы встроенным маршрутом DB (SQLite, Firebird), но здесь являюсь некоторыми другими опциями:
Я рекомендую блок Программы кэширования в Библиотеке Предприятия от MS. Это рекомендовалось также, но ссылка указывает на статью о части Доступа к данным Библиотеки Предприятия.
Вот ссылка на Блок Программы кэширования:
http://msdn.microsoft.com/en-us/library/cc309502.aspx
И конкретно Вы захотите создать новое запоминающее устройство (если тот, который сохраняется к диску, не будет там):
Учитывая Ваши недавние редактирования к вопросу, я предлагаю, чтобы Вы реализовали решение, отмеченное в Вашем вопросе, поскольку Вы очень вряд ли найдете такое наивное решение обернутым в библиотеке для Вас к повторному использованию.