我有一个Activity
,其布局包含自定义ImageView
和其他一些视图(一个ListView
和另外几个TextView
)。根据用户触摸ImageView
的位置,我需要更改ListView
和TextView
的内容。我有一个onTouchEvent
监听器在ImageView
类中正常工作,但不知怎的,我需要向Activity类发信号通知触发事件发生在ImageView
并传递给它一些数据......然后活动可以正确调整所有其他视图。
我想过尝试从ImageView
的{{1}}处理程序返回“false”,从而让事件进入ImageView的父视图,但我认为它没有父视图查看...只是父亲onTouchEvent
(ViewGroup
)。
这对我来说感觉像是一个设计问题,但我不确定。
提前感谢任何建议。
答案 0 :(得分: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
并在找到图片视图后调用imageView.setOnImageChangedListener(this)
(可能使用findViewById
)。
显然,您可以通过缩短方法名称来节省一些输入。更重要的是,如果它有用,你可以在回调方法中添加其他参数。