Проверьте этот пример проекта
https://github.com/saini2sandeep/Favourite.git
Для показа тостов "Сохранено в избранном" и "Удалено из избранного" Вы можете сделать это так:
// Предположим, что likeButtonCB - ваш флажок, и вы должны установить для него слушателя, как показано ниже в коде:
likeButtonCB.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
//Show "Saved to favourite" toast
} else {
//Show "Removed from favourite" toast
}
}
});
Теперь, чтобы изменить изображение кнопки «Нравится» при нажатии на нее, вы должны сделать рисованиефайл, подобный следующему: Вы можете назвать его в соответствии с тем, как я его называю, «like_button_background» здесь «ic_like_heart_button_color» - это изображение для рисования понравившейся кнопки, а «ic_like_heart_button_empty» - непохожее изображение.
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/ic_like_heart_button_color"
android:state_checked="true" />
<item android:drawable="@drawable/ic_like_heart_button_empty" />
Добавить этот файл вфон вашего флажка в xml-коде выглядит так:
<CheckBox
android:id="@+id/like_button_cb"
android:layout_width="32dp"
android:layout_height="32dp"
android:layout_marginStart="@dimen/margin_left_gen_16"
android:background="@drawable/like_button_background"
android:button="@null"
android:gravity="center"
android:padding="@dimen/padding_gen_4"
android:textSize="@dimen/tv_gen_16"
android:theme="@style/checkBoxStyle"
android:visibility="visible" />
Это решит ваши первые две проблемы.Чтобы сохранить подобное для отдельных карт, необходимо сохранить еще одно поле в классе модели "int isLiked = 0;"в классе модели и в соответствии с этим вы можете обновлять состояние кнопки «лайк» при заполнении пользовательского интерфейса.
Вы можете сделать это следующим образом: например, история - это ваша модель, а затем введите этот код в свой адаптер, заполняяданные карты.
if (story.getIsLiked() == 1) {
likeButtonCB.setChecked(true);
} else {
likeButtonCB.setChecked(false);
}