たくさんの画像を含むレイアウトがあります。私がしなければならないことは、画像がクリックされたときにその詳細を表示することです。しかし、すべての画像に onClickListeners を使用したくありません。どうすればこれを達成できますか?
1823 次
3 に答える
3
すべての画像に対して異なるハンドラーを用意する必要はありません。代わりに、すべての画像に対して 1 つのハンドラーを使用します。これにより、コードがよりクリーンで管理しやすくなり、問題も解決します。
public void onCreate(Bundle bundle) {
//...
OnClickListener mHandler = new OnClickListener() {
@Override
public void onClick(View v) {
switch(v.getId()) {
case R.id.img1:
//..
break;
case R.id.img2:
//....
break;
}
}
};
ImageButton btn1 = (ImageButton)findViewById(R.id.img1);
ImageButton btn2 = (ImageButton)findViewById(R.id.img2);
//...
btn1.SetOnClickListener(mHandler);
btn2.SetOnClickListener(mHandler);
//...
}
于 2013-04-02T14:09:13.890 に答える
2
Listener
それらすべてを支配する1つ。
onClick()
オブジェクトに実装し、リスナーとして登録で、パラメータとして渡され
onClick()
たオブジェクトを調べて、どの画像がクリックされたかを判断します。キャストして実際の画像を取得することまで、View
何でもできます。getId()
(ImageView)
どの画像がクリックされたかがわかったら、それを使って何をしますか。
于 2013-04-02T14:11:08.443 に答える
0
(または何でも)のカスタム動作を実装しようとしていてImageView
、そのタイプのビューの複数のインスタンスがある場合は、をサブクラス化しImageView
、そこにリスナーを配置する必要があります。これで、必要なカスタム動作を実装するカプセル化された が得View
られます。後でそれらを増やしたり減らしたり、別の場所に配置したりした場合は、View
とその動作を簡単に移動できますActivity
。
于 2013-04-02T14:11:37.663 に答える