2012-01-01 7 views
1

Activityには、カスタムImageViewといくつかの他のビュー(ListViewとその他のTextView)を含むレイアウトがあります。ユーザーがImageViewに触れる場所に応じて、ListViewTextViewの内容を変更する必要があります。私はonTouchEventリスナーをImageViewクラスで正常に動作させていますが、なんとなく、タッチイベントがImageViewで発生したことをアクティビティクラスに通知し、データを渡す必要があります...アクティビティで他のすべてのビューを適切に調整できます。ImageViewのタッチイベントをImageViewの親アクティビティに戻す方法

ちょうど親...私は、このようにイベントがImageViewの者の親ビューまで入学させる、ImageViewonTouchEventハンドラから「偽」を返すしようと考えたが、私はそれは親ビューを持っているとは思いませんViewGroupLinearLayout)。

これは私の設計上の問題のように感じますが、わかりません。

ご意見ありがとうございます。

答えて

0

これを行うための組み込み方法はありません。コールバックがコンテンツを変更した後に登録されるように、すべてのユーザーに画像ビュークラスを作成します。アクティビティのonCreateメソッドで、イメージビューを取得し、そのアクティビティをコールバックオブジェクトとして登録します。画像ビューがタッチイベントの処理を終了すると、コールバックメソッドを呼び出すことができます。ここで

が、これはうまくいくかもしれない方法のスケッチです:

public class MyImageView extends ImageView { 
    public interface OnImageChangedListener { 
     public void imageChanged(MyImageView view); 
    } 

    private OnImageChangedListener mChangeListener; 

    public void setOnImageChangedListener(OnImageChangedListener listener) { 
     mChangeListener = listener; 
    } 

    // inside your OnTouchListener: 
     public boolean onTouch(View view, MotionEvent event) { 
      // make updates, then, if warranted: 
      if (mChangeListener != null) { 
       mChangeListener.imageChanged(MyImageView.this); 
      } 
     } 

それからちょうどあなたの活動がMyImageView.OnImageChangedListenerを実装し、(おそらくfindViewByIdを使用して)画像ビューを見つけた後imageView.setOnImageChangedListener(this)を呼び出すように宣言しました。

明らかに、メソッド名を短縮することで、いくつかの型を節約できます。さらに重要なことは、便利な場合は、コールバックメソッドに引数を追加することができます。

+0

ありがとうTed!あなたのソリューションは良いと思う。今、私はAndroidでコールバックを作成する方法を学ぶ必要があります。私は思う**私はこれを処理する必要があります。 :-) –

+0

@BryanGreenway - サンプルコードを追加しました。 –

+0

素晴らしいヘルプ!これは私のためにこれの短い仕事をし、途中で私を教育しました。よく働く。もう一度ありがとう、テッド。 –

関連する問題