Android ImageButton,获取带有ViewPager布局的ImageResource
Android ImageButton, get ImageResource with ViewPager layout
我目前正在学习一些 Android 并开发我的第一个应用程序。我使用包含 ImageButton 的 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" />
在我的 ViewPager 适配器中,我尝试遵循 onClick 方法:
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;
}
}
当我单击 ImageButton 时,它会更改图像。问题是:我在一个视图上单击按钮(单击后 heart_red)并向右滑动(当前为心脏)。在新视图上,我单击心脏 ImageButton。然后 ImageButton 应该变成 heart_red,而不是用消息 "No favourite anymore..." 再次将 ImageButton 设置为 heart。原因:仍然存储
nofav = false;
所以我的问题是。如何获取视图的当前 ImageResource?有了这些信息,我可以为每个新视图设置 nofav 变量。
也许有人对如何处理它有更好的想法。谢谢!
解决方案 - Veneets 的 Tag 创意非常适合我。刚刚添加了消息吐司。
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);
}
您可以使用标签维护 ImageButton
的收藏状态:
public void onClickFav(View v) {
ImageButton favouriteButton = (ImageButton) v;
// Assuming default is false
Boolean isFav = favouriteButton.getTag() == null ? Boolean.FALSE : (Boolean) favouriteButton.getTag();
favouriteButton.setImageResource(isFav ? R.drawable.heart : R.drawable.heart_red);
favouriteButton.setTag(!isFav);
}
我目前正在学习一些 Android 并开发我的第一个应用程序。我使用包含 ImageButton 的 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" />
在我的 ViewPager 适配器中,我尝试遵循 onClick 方法:
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;
}
}
当我单击 ImageButton 时,它会更改图像。问题是:我在一个视图上单击按钮(单击后 heart_red)并向右滑动(当前为心脏)。在新视图上,我单击心脏 ImageButton。然后 ImageButton 应该变成 heart_red,而不是用消息 "No favourite anymore..." 再次将 ImageButton 设置为 heart。原因:仍然存储
nofav = false;
所以我的问题是。如何获取视图的当前 ImageResource?有了这些信息,我可以为每个新视图设置 nofav 变量。
也许有人对如何处理它有更好的想法。谢谢!
解决方案 - Veneets 的 Tag 创意非常适合我。刚刚添加了消息吐司。
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);
}
您可以使用标签维护 ImageButton
的收藏状态:
public void onClickFav(View v) {
ImageButton favouriteButton = (ImageButton) v;
// Assuming default is false
Boolean isFav = favouriteButton.getTag() == null ? Boolean.FALSE : (Boolean) favouriteButton.getTag();
favouriteButton.setImageResource(isFav ? R.drawable.heart : R.drawable.heart_red);
favouriteButton.setTag(!isFav);
}