Ich lerne gerade etwas Android und entwickle meine erste App. Ich benutze eine ViewPager, die eine Image enthält:Android ImageButton, bekomme ImageResource mit ViewPager Layout
<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" />
In meinem Adapter für den ViewPager habe ich versucht, onClick Methode folgen:
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;
}
}
Wenn ich das Image klicken ändert das Bild. Das Problem ist: Ich klicke auf die Schaltfläche in einer Ansicht (heart_red nach dem Klick) und wische nach rechts (zur Zeit Herz). In der neuen Ansicht klicke ich auf den Heart ImageButton. Dann sollte der ImageButton zu heart_red werden, stattdessen setzt er den ImageButton erneut mit der Meldung "No favourite among ..." fest. Grund: es ist noch gespeichert
nofav = false;
Also meine Frage ist. Wie kann ich die aktuelle ImageResource einer Ansicht abrufen? Mit diesen Informationen konnte ich die nofav-Variable mit jeder neuen Ansicht festlegen.
Vielleicht hat jemand auch eine bessere Idee, wie man damit umgeht. Vielen Dank!
LÖSUNG - Veneets Idee mit Tag funktioniert perfekt für mich. Habe gerade den Message Toast hinzugefügt.
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);
}