0

私は16個の画像ビューを持っており、それぞれがリストナーとしてonBtnClickに設定されています。このメソッド内で、画像ビューIDが特定のIDに対応しているかどうかを確認します。これを変更して、画像ビュー内の画像リソースを確認する必要があります。

public void onBtnClicked(View v)
{

  if( v.getId() == R.id.img1 )
  {
      Intent guess = new Intent(this, com.Logo_Master.Guesslogo.class);
      guess.putExtra("image","img1");
      startActivity(guess);
  }
}

次のようにする必要があります。

public void onBtnClicked(View v)
{

  if( v.getId() == R.drawable.img1 )
  {
      Intent guess = new Intent(this, com.Logo_Master.Guesslogo.class);
      guess.putExtra("image","img1");
      startActivity(guess);
  }
}

または似たようなもの.....したがって、イメージビューではなくイメージビュー内の画像をチェックします......

ありがとうございました。

/編集/

Random random = new Random( System.currentTimeMillis() );
    List<Integer> generated = new ArrayList<Integer>();
    for (int i = 0; i < imageViews.length; i++) {

        int v = imageViews[i];
        int next = random.nextInt( 16 );
        if ( !generated.contains( next ) ) {
            generated.add( next );
            ImageView iv = (ImageView) findViewById( v );
            iv.setImageResource( images[next] );
            Object tag = (Object) new Integer(getImageName(this, String.valueOf(images[next])));
            iv.setTag(tag);
        }
        else {
            i--;
        }
    }

public static int getImageId(Context context, String imageName) {
return context.getResources().getIdentifier("id/" + imageName + "guess", null, context.getPackageName());
}


public static int getImageName(Context context, String imageName) 
{
return context.getResources().getIdentifier("drawable/" + imageName + "guess", null,     context.getPackageName());
}
4

2 に答える 2

1

imageViewでこれを直接行う方法はありません。ただし、imageViewをサブクラス化し、必要な機能を追加することを妨げるものは何もありません。例えば:

import android.content.Context;
import android.util.AttributeSet;
import android.widget.ImageButton;

public class MyImageButton extends ImageButton {

private static final String ANDROID_NAME_SPACE = "http://schemas.android.com/apk/res/android";
private int mDrawableResId = -1;

public MyImageButton(Context context) {
    super(context);
    // TODO Auto-generated constructor stub
}

public MyImageButton(Context context, AttributeSet attrs) {
    super(context, attrs);
    mDrawableResId = attrs.getAttributeResourceValue(ANDROID_NAME_SPACE, "src", -1);
}

public MyImageButton(Context context, AttributeSet attrs, int defStyle) {
    super(context, attrs, defStyle);
    mDrawableResId = attrs.getAttributeResourceValue(ANDROID_NAME_SPACE, "src", -1);
}
@Override
public void setImageResource(int resId){
    super.setImageResource(resId);
    mDrawableResId = resId;
}

public int getDrawableResId(){
    return mDrawableResId;
}
}

これは、ドローアブルを直接およびXMLから設定することをキャッチします。

(免責事項:私はこれを試したことがありませんが、希望どおりに動作するはずです。上記の例はエミュレーターで機能します。このアプローチについて意見があれば、ぜひ聞いてください。)

于 2012-06-05T13:38:38.073 に答える
1

タグを使用してこれを実現できます。

ImageView を (コードまたは XML で) 作成するときは、タグを定義します。

android:tag = "tag"

また

Object tag = (Object) new Integer(R.drawable.img1);
imageView.setTag(tag);

次に、必要になる前にタグを取得します。

Object tag = imageView.getTag();
int drawableId = Integer.parseInt(tag.toString());
if( drawableId == R.drawable.img1 ) {
      ....
}

幸運を!

于 2012-06-04T18:41:16.100 に答える