Я хочу создать список избранного для предметов
Я использую SharedPreference для сохранения элемента в FavoriteList
public void addFavorite(Context context, TilekItem item) {
List<TilekItem> favorites = getFavorites(context);
if (favorites == null)
favorites = new ArrayList<>();
favorites.add(item);
saveFavorites(context, favorites);
}
public ArrayList<TilekItem> getFavorites(Context context) {
SharedPreferences settings;
List<TilekItem> favorites;
settings = context.getSharedPreferences(PREFS_NAME,
Context.MODE_PRIVATE);
if (settings.contains(FAVORITES)) {
String jsonFavorites = settings.getString(FAVORITES, null);
Gson gson = new Gson();
TilekItem[] favoriteItems = gson.fromJson(jsonFavorites,
TilekItem[].class);
favorites = Arrays.asList(favoriteItems);
favorites = new ArrayList(favorites);
} else
return null;
return (ArrayList<TilekItem>) favorites;
}
Существует два способа добавления в список избранных и получения всего элемента из списка
Для сохранения в избранном списке в DetailActivity я использую FloatingActionButton
DetailActivity.class
class DetailActivity : AppCompatActivity() {
var isFavorite = false
var textForFavorite = ""
var sharedPreference: SharedPreference? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_detail)
val tilek = getIntent().getStringExtra("TILEK")
val type = getIntent().getStringExtra("TYPE")
val id = getIntent().getIntExtra("ID", 0)
tilek_detail.text = tilek
sharedPreference = SharedPreference()
val item = TilekItem(id, tilek, type)
isFavorite = checkFavoriteItem(item)
fab.setOnClickListener { view ->
if (!isFavorite) {
isFavorite = true
textForFavorite = "Added to"
fab.setImageDrawable(ContextCompat.getDrawable(this@DetailActivity, R.drawable.ic_star_yellow))
sharedPreference!!.addFavorite(this@DetailActivity, item)
} else {
isFavorite = false
textForFavorite = "Removed from"
sharedPreference!!.removeFavorite(this@DetailActivity, item)
fab.setImageDrawable(ContextCompat.getDrawable(this@DetailActivity, R.drawable.ic_star))
}
Snackbar.make(view, "$textForFavorite favourite list", Snackbar.LENGTH_LONG)
.setAction("Action", null).show()
}
initToolbar()
}
fun checkFavoriteItem(checkItem: TilekItem): Boolean {
val favorites = sharedPreference?.getFavorites(this@DetailActivity)
val result = favorites!!.contains(checkItem)
return result
}
С этим кодом я могу сохранить в избранное
Но fab.setImageDrawable(ContextCompat.getDrawable(this@DetailActivity, R.drawable.ic_star_yellow)
не сохраняю, когда я
повторно открыть элемент
Как я могу сохранить это состояние?