2012-01-01 58 views
1

我有一個Activity包含自定義ImageView佈局和其他一些看法(一ListView和其他幾個TextView S)。根據用戶觸摸ImageView的位置,我需要更改ListViewTextView的內容。我有一個onTouchEvent監聽器在ImageView類中正常工作,但不知何故,我需要發信號通知活動類,發現觸摸事件發生在ImageView並傳遞了一些數據...然後Activity可以正確調整所有其他視圖。如何獲得的ImageView觸摸事件回的ImageView父活動

我想過試圖從ImageViewonTouchEvent處理程序返回「假」,從而讓事件錄取到的ImageView父視圖,但我不認爲它有一個父視圖...只是父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

謝謝泰德!你的解決方案聽起來不錯現在我需要了解如何在Android中創建回調。我**認爲**我應該能夠處理這個問題。 :-) – 2012-01-01 23:05:57

+0

@BryanGreenway - 我添加了一些示例代碼,以防萬一它會幫助。 – 2012-01-01 23:47:52

+0

奇妙的幫助!這爲我做了簡短的工作,並一路教育了我。很棒。再次感謝,特德。 – 2012-01-02 07:29:22

相關問題