2012-01-08 15 views
1

質問:300-400の画像ビューを持つクラスがあります。クラスはView.onClickListenerを実装します。私は何らかの並べ替えでimageviewsを置くことができますか? imageviewsこの複数のビューのAndroid imageview onclick

ImageView IM1 = new ImageView(this); 
IM1.setImageResource(R.drawable.have_fun); 

のようなものを設定していると私はクラスのためのonclickでこれらを使用する方法を理解するカント。私は通常getIdを使用していますが、xmlでarentするため、これらのIDは持っていません。例えば

答えて

0

、IM1は、あなたのImageViewのであれば:

IM1.setOnTouchListener(new View.OnTouchListener(){ 
    public boolean onTouch(View v, MotionEvent event){ 
     /*your code here*/ 
     return true; 
    } 
}); 

それともあなたは、唯一のonClick処理する場合

IM1.setOnClickListener(new View.OnClickListener(){ 
    public void onClick(View v){ 
     /*your code here*/ 
    } 
}); 

違いonTouchイベントにあなたも扱うことができるということである「移動アクションをドラッグします。 onTouchはあなたの指がImageView上にある間に呼び出されます。 onClick - クリックした後にのみ

それとも、例えば、インターフェースOnClickListenerを実装して別のクラスを作成することができます。

public class TouchController implements OnClickListener{ 

    /*any code that you need*/ 

    public void onClick(View v){ 
     /*your code*/ 
    } 
} 

、その後

TouchController controller = new TouchController(); 
IM1.setOnClickListener(controller); 
+1

onTouchで、彼はonClickのを望んでいます。 – Dante

+0

onClickとonTouchは同じですか? – Hello

+0

でも、コードを書くのが簡単な方法はありません。各画像のonclickを書き、 'ImageView IM1 = new ImageView(this);で各画像ビューを設定します。 IM1.setImageResource(R.drawable.have_fun); '?私は、onclickの実装を使用していません..? – Hello

1
ArrayList<ImageView> imageViews = new ArrayList<ImageView>(); 
imageViews.add(IM1); 
// add others ... 
for(ImageView imgView : imageViews){ 
    IM1.setOnClickListener(this); 
} 

とのonClickメソッドでは、あなたのImageViewsでビューVを比較することができますが何をすべきかを決める。

public void onClick(View v){ 
    if((ImageView)v == IM1){ 
     // do something 
    } 
} 
0

ビューにタグを使用できます。

は、あなたが

int imageClicked = (int) clickedView.getTag(); 

imageClickedを比較使用してクリックされた画像を決定することができ、クリックされたビューへの参照を持っている

ImageView IM1 = new ImageView(this); 
IM1.setImageResource(R.drawable.have_fun); 
IM1.setTag(1); 

とonClickListenerでImageViewのために整数タグを設定しますどの画像がクリックされたかを知る。

+0

私の答えに例を追加しましたそれを行うことができます:)、あなたは整数にキャストする必要があります。 – Hello

+0

はい、あなたならば[OK]を、onclickの中でこのような何かを行うことができます –

0

あなたがイメージを作成するときに、動的にIDを設定できます。

for (int i = 0; i < listImages.size(); i++) { 
     final ImageView image = listImages.get(i); 
     image.setImageResource(R.drawable.have_fun); 
     image.setId(i); 
    } 

そしてあなたのonClickメソッドであなたができる:

OnClickListener onClick = new OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     switch (v.getId()) { 

     } 
    } 
}; 
関連する問題