私は現在、いくつかのAndroidを学び、私の最初のAppを開発しています。私はそれがイメージを変えるのImageButtonをクリックするとAndroid ImageButton、ViewPagerレイアウトでImageResourceを取得
private boolean nofav = true;
public void onClickFav(View v) {
ImageButton favouriteButton = (ImageButton) v;
if (nofav) {
favouriteButton.setImageResource(R.drawable.heart_red);
Toast.makeText(SuggestionActivity.this, "Woah, new favourite!",
Toast.LENGTH_SHORT).show();
nofav = false;
} else {
favouriteButton.setImageResource(R.drawable.heart);
Toast.makeText(SuggestionActivity.this, "No favourite anymore...",
Toast.LENGTH_SHORT).show();
nofav = true;
}
}
:私はonClickの方法に従ってみましたViewPagerのために私のアダプタで
<ImageButton
android:id="@+id/favourite_button"
android:layout_width="60dp"
android:layout_height="60dp"
android:layout_gravity="center"
android:background="@android:color/transparent"
android:onClick="onClickFav"
android:scaleType="fitCenter"
android:src="@drawable/heart" />
:私はのImageButtonが含まれているViewPagerを使用しています。問題は次のとおりです。あるビュー(ボタンをクリックするとheart_red)のボタンをクリックし、右側(現在のハート)にスワイプします。新しいビューでは、ImageButtonの心臓部をクリックします。次に、ImageButtonはheart_redになるはずです。代わりにImageButtonを "No favorite anymore ..."というメッセージで心に再設定します。理由:それはまだ格納されています
nofav = false;
私の質問です。ビューの現在のImageResourceを取得するにはどうすればよいですか?この情報で、新しいビューごとにnofav変数を設定できました。
多分、誰かがそれに対処するより良いアイデアを持っています。ありがとうございました!
解決策 - タグ付きベネッツアイデアは、私にとって完璧に機能します。ちょうどメッセージトーストが追加されました。
public void onClickFav(View v) {
ImageButton favouriteButton = (ImageButton) v;
Boolean isFav = favouriteButton.getTag() == null ? Boolean.FALSE : (Boolean) favouriteButton.getTag();
favouriteButton.setImageResource(isFav ? R.drawable.heart : R.drawable.heart_red);
if (isFav) {
Toast.makeText(SuggestionActivity.this, "No favourite anymore...",
Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(SuggestionActivity.this, "Woah, new favourite!",
Toast.LENGTH_SHORT).show();
}
favouriteButton.setTag(!isFav);
}