3

これが短いバージョンです。クリック可能な25の画像ビューを持つボーナスアクティビティがあります。必要なのは、1つのImageViewをクリックしたときに、他のすべてをenabled(false)に設定する必要があることです。これをforループで実行したいと思います。私が持っているものの例を以下に示します。助言がありますか

    private ImageView img1;
    private ImageView img2;
    private ImageView img3;
    private ImageView img4;
    private ImageView img5;
    private ImageView img6;
    private ImageView img7;
    private ImageView img8;
    private ImageView img9;
    private ImageView img10;
    private ImageView[] imageview = {img1,img2,img3,img4,img5,img6,img7,img8,img9,img10};
    int i = 0; 
    int imgv =0;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState); 
        requestWindowFeature(Window.FEATURE_NO_TITLE);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
    WindowManager.LayoutParams.FLAG_FULLSCREEN);
    setContentView(R.layout.bonus_layout); 


        img1 = (ImageView) findViewById(R.id.imageView1);
        img2 = (ImageView) findViewById(R.id.imageView2);
        img3 = (ImageView) findViewById(R.id.imageView3);
        img4 = (ImageView) findViewById(R.id.imageView4);
        img5 = (ImageView) findViewById(R.id.imageView5);
        img6 = (ImageView) findViewById(R.id.imageView6);
        img7 = (ImageView) findViewById(R.id.imageView7);
        img8 = (ImageView) findViewById(R.id.imageView8);
        img9 = (ImageView) findViewById(R.id.imageView9);
        img10 = (ImageView) findViewById(R.id.imageView10);


    img1.setOnClickListener(new OnClickListener() {
    public void onClick(View v) {
            if(rank[b]==0){

            for(i<25) imageview.get(i) setEnabled(false);
                             (i++); 



//This example offered get a force close  for(ImageView iv:imageview)iv.setEnabled(false);
                }
              }} });

これが私を助けてくれる修正されたコードです

public class BonusActivity extends Activity implements View.OnClickListener   
{
    Integer rank[]=  {0,100,200,300,0,400,500,0};


    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState); 
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
        WindowManager.LayoutParams.FLAG_FULLSCREEN);
        setContentView(R.layout.bonus_layout);

     final ImageView img1 = (ImageView) findViewById(R.id.imageView1);
     final ImageView img2 = (ImageView) findViewById(R.id.imageView2);
     final ImageView img3 = (ImageView) findViewById(R.id.imageView3);
     final ImageView img4 = (ImageView) findViewById(R.id.imageView4);
     final ImageView img5 = (ImageView) findViewById(R.id.imageView5);
     final ImageView img6 = (ImageView) findViewById(R.id.imageView6);
     final ImageView img7 = (ImageView) findViewById(R.id.imageView7);
     final ImageView img8 = (ImageView) findViewById(R.id.imageView8);
     final ImageView img9 = (ImageView) findViewById(R.id.imageView9);
     final ImageView img10 = (ImageView) findViewById(R.id.imageView10);
     final ImageView[] imageview ={img1,img2,img3,img4,img5,img6,img7,img8,img9,img10};

    img1.setOnClickListener(new OnClickListener() {
    public void onClick(View v) {

            if(rank[b]==0){
            img1.setImageResource(R.drawable.empty);

            for(int i = 0; i<imageview.length;i++)
            {imageview[i].setClickable(false);}
4

3 に答える 3

1

で初期化ImageView ArrayしてonCreate()から、以下のコードを使用して、各ImageViewを無効[enablefalse]にします。

for(int i = 0; i < imageview.length; i++)
{
    imageview[i].setEnabled(false);    
}
于 2012-06-20T01:05:01.657 に答える
1
public void setEnabledFalse(int enableTrue){
for(int x = 0; x < imageview.length; x++){

   if(x != enabledTrue){
      imageview[i].setEnabled(false);
   }
}

}

上記のようなメソッドを作成し、クリックした ImageView のパラメーターを渡します。

于 2012-06-20T01:07:29.687 に答える
1

これはどう、

  1. アクティビティは View.OnClickListener を実装します
  2. アクティビティの onClick をオーバーライドします。
void onClick(View v) {
    for (int i = 0; i < imageview.length; i++) {
        if (v != imageview[i]) {
            imageview[i].setEnabled(false);
        }
    }
}

Activity.onCreateでonclickリスナーを設定することを忘れないでください

for (int i = 0; i < imageview.length; i++) {
   imageview[i].setOnClickListener(this);
}
于 2012-06-20T01:16:38.173 に答える