如何获得的ImageView触摸事件回的ImageView父活动
问题描述:
我有一个Activity
包含自定义ImageView
布局和其他一些看法(一ListView
和其他几个TextView
S)。根据用户触摸ImageView
的位置,我需要更改ListView
和TextView
的内容。我有一个onTouchEvent
监听器在ImageView
类中正常工作,但不知何故,我需要发信号通知活动类,发现触摸事件发生在ImageView
并传递了一些数据...然后Activity可以正确调整所有其他视图。如何获得的ImageView触摸事件回的ImageView父活动
我想过试图从ImageView
的onTouchEvent
处理程序返回“假”,从而让事件录取到的ImageView父视图,但我不认为它有一个父视图...只是父ViewGroup
(LinearLayout
)。
这对我来说就像一个设计问题,但我不确定。
在此先感谢您的任何建议。
答
我不认为有一个内置的方式来做到这一点。将您的图像视图类写入全部,以便在更改其内容后进行回调以进行注册。然后在活动的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)
。
显然,您可以通过缩短方法名称来保存一些输入内容。更重要的是,如果有用的话,你可以在回调方法中添加额外的参数。
谢谢泰德!你的解决方案听起来不错现在我需要了解如何在Android中创建回调。我**认为**我应该能够处理这个问题。 :-) – 2012-01-01 23:05:57
@BryanGreenway - 我添加了一些示例代码,以防万一它会帮助。 – 2012-01-01 23:47:52
奇妙的帮助!这为我做了简短的工作,并一路教育了我。很棒。再次感谢,特德。 – 2012-01-02 07:29:22