1

我遇到了这个错误:

09-13 18:20:50.183: ERROR/AndroidRuntime(300): java.lang.ArrayIndexOutOfBoundsException
09-13 18:20:50.183: ERROR/AndroidRuntime(300):     at android.view.MotionEvent.getY(MotionEvent.java:792)
09-13 18:20:50.183: ERROR/AndroidRuntime(300):     at android.widget.AbsListView.onTouchEvent(AbsListView.java:2040)

这里有一个问题: http ://code.google.com/p/android/issues/detail?id=10238#c6

当我尝试将 MotionEvent 从一个 ListView 传递给另一个时,出现此错误。但是,这只发生在一个 ListView 具有带有 onClickListeners 的视图时。

public boolean onTouch(View view, MotionEvent event) {

    if(event.getAction() == MotionEvent.ACTION_DOWN && !requestedFocus) {
        view.requestFocus();
        requestedFocus = true;
    } else if (event.getAction() == MotionEvent.ACTION_UP) {
        requestedFocus = false;
    }

    if(view == leftListView && view.isFocused()) {
        rightListView.dispatchTouchEvent(event);
    } else if(view == rightListView && view.isFocused()) {
        leftListView.dispatchTouchEvent(event);
    }
    return false;
}

使用上面的代码,一切正常,直到rightListView动态加载具有 onClickListeners 的视图。然后,此视图传递给的任何 MotionEventleftListView都会导致 ArrayIndexOutOfBoundsException。leftListView不过,从工作到工作的事件rightListView都符合预期。

这似乎是因为 AbsListView 的 mActivePointerId == INVALID_POINTER,例如 -1。我尝试使用反射来改变这个值......但它没有帮助。

所以,我的问题是,有没有办法解决这个问题?

我的目标是同步两个 ListView 的滚动,所以如果另一个方法可行,我愿意放弃这种方法。我曾尝试使用 ScrollListeners,但它们会导致其他问题。

提前致谢!

4

1 回答 1

0

我认为您有一个数组,例如该数组的大小为 9,并且您使用的是 index[10]。

于 2012-10-23T00:49:10.753 回答