2012-02-17 7 views
3

私はScrollViewを作成し、それに添付されたOnClickListenersを持つImageViewsで塗りつぶしましたが、今はScrollViewをスクロールしようとすると、OnClickListenersが途中でスムーズにスクロールしないようです。各アイテムのOnClickListenersを持つScrollView?

これを修正する方法はありますか?それ以外の場合は、ScrollViewではなくListViewを使用しますか?

ありがとうございます!

答えて

2

ImageViewごとにOnClickListenerを持つ必要はありません。

コールバックの定義は

vがクリックされた図である
public abstract void onClick (View v) 

です。

目的に応じて、特定のビューを識別することができます。あなただけ(例えば、色合いを適用)、一般的な何かをしたい場合は、具体的には、例えばビューを識別するために必要がある場合、これは

... 
public void onClick(View v) { 
    ImageView iv = (ImageView) v; 
    iv.setTint(Color.BLUE); // Or whatever generic operation you want 
} 

非常に簡単ですこれは、ビューが静的でない場合、私は通常、あなたが一意に識別するためにsetTag()getTag()メソッドを使用することができ、それを

... 
public void onClick(View v) { 
    int id = v.getId(); 
    switch (id) { 
     case R.id.save: 
      //do stuff 
      break; 
     case R.id.open: 
      //do stuff 
      break; 
    } 
} 

を識別するためのItemIDを使用して、XMLメニューの一部だ(と関連付ける有用なデータ!)各ビューで:

... 
public void onClick(View v) { 
    // the MyViewInfo object was associated with the view somewhere else, presumably when the view was created 
    MyViewInfo info = (MyViewInfo) v.getTag(); 
    File datafile = info.getFileName(); 
    ... 
    } 
} 
+0

ありがとうございます!それはすべて動的なのでもう1つだけ、このonClick関数をタグが設定されているImageViewにどのように関連付ける必要がありますか? –

+0

'onClick'メソッドを保持するクラスXは、' View.onClickListener'インターフェースを実装する必要があります。各ビューに対してsetOnClickListener(x)を呼び出す必要があります。ここでxはXのインスタンスです。コンテナビューでは、すべての子ビューのクリックイベントを伝えることができるほどスマートであれば、その上で 'setOnClickListener'を呼び出すだけでよいでしょう。親ビュー。 – CjS

+0

はScrollViewにありますか? –

関連する問題