2017-05-28 5 views
0

私は現在、いくつかの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); 
    } 

答えて

0

あなたがタグを使用して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); 
    } 
関連する問題