Я знаю, что его уже спросили и ответили здесь и здесь. Я пробовал оба, но ни один из них мне не подходит.
У меня есть любимая кнопка. Если она нажата, я устанавливаю элемент в избранное в database
и заменяю изображение toggle button
, и наоборот. Вот как я это делаю:
<ToggleButton
android:id="@+id/btnFavorite"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textOn=""
android:textOff=""
android:layout_marginRight="5dp"
android:background="@drawable/favorite_btn_style" />
Вот мой favorite_btn_style.xml
:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/favourit_blue_btn" android:state_checked="true"/>
<!-- pressed -->
<item android:drawable="@drawable/favourit_dark_btn"/>
<!-- default/unchecked -->
</selector>
В oncreate
я проверяю, установлен ли элемент уже в избранное, затем с setchecked
на true
:
if (movieObj.getIsFav().intValue() == 1) {
btnFav.setChecked(true);
}
Вот моя onclicklistener
на кнопке:
btnFav.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
if (!btnFav.isChecked()) {
btnFav.setChecked(true);
// set favorite
dbHelper.updateMovieFavorite(movieObj.getId().intValue(), 1);
} else {
btnFav.setChecked(false);
// set favorite
dbHelper.updateMovieFavorite(movieObj.getId().intValue(), 0);
}
}
});
Функция вызывается и выполняется нормально, но изображение не меняется .. Что я делаю не так?