如何获得的ImageView触摸事件回的ImageView父活动

问题描述:

我有一个Activity包含自定义ImageView布局和其他一些看法(一ListView和其他几个TextView S)。根据用户触摸ImageView的位置,我需要更改ListViewTextView的内容。我有一个onTouchEvent监听器在ImageView类中正常工作,但不知何故,我需要发信号通知活动类,发现触摸事件发生在ImageView并传递了一些数据...然后Activity可以正确调整所有其他视图。如何获得的ImageView触摸事件回的ImageView父活动

我想过试图从ImageViewonTouchEvent处理程序返回“假”,从而让事件录取到的ImageView父视图,但我不认为它有一个父视图...只是父ViewGroupLinearLayout)。

这对我来说就像一个设计问题,但我不确定。

在此先感谢您的任何建议。

我不认为有一个内置的方式来做到这一点。将您的图像视图类写入全部,以便在更改其内容后进行回调以进行注册。然后在活动的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