1

我有两个列表视图。当滚动另一个列表视图时,我需要自动滚动一个列表视图。两个列表视图都应该有这个能力

我在两个列表视图中实现了 onScrollListner

对于列表视图 1

@Override
public void onScroll(AbsListView view, int firstVisibleItem,
                int visibleItemCount, int totalItemCount) {
if (l1.getChildAt(0) != null) {
    Rect r = new Rect();
    l1.getChildVisibleRect(l1.getChildAt(0), r, null);
    l2.setSelectionFromTop(l1.getFirstVisiblePosition(), r.top);
    }

}

对于列表视图 2

@Override
public void onScroll(AbsListView view, int firstVisibleItem,
                int visibleItemCount, int totalItemCount) {
if (l2.getChildAt(0) != null) {
    Rect r = new Rect();
    l2.getChildVisibleRect(l2.getChildAt(0), r, null);
    l1.setSelectionFromTop(l2.getFirstVisiblePosition(), r.top);
    }

}

我对此有两个问题

1 - 列表滚动不顺畅。(不像普通的列表视图)

2 - 我只能使用一个列表视图滚动两个列表视图。(当我使用 l2 滚动时,两者都会滚动。但当我使用 l1 滚动时它不起作用。两者都保持固定)

提前致谢

4

3 回答 3

0

这是您的应用程序,因此您可以做任何您想做的事情,但我对您想要实现的目标感到困惑。拥有两个列表视图的唯一想法是分别表示两种不同类别的数据,以便可以分别访问(滚动或选择)它们。
如果您需要表示需要并排显示为列表的两类数据,那么您可以有一个包含两列的列表行。
像这样的东西会起作用:
在此处输入图像描述


您可以使用不同类型的数据填充这两行,并且可以一起滚动。

于 2012-07-27T06:04:15.623 回答
0

我发现了一种不同的方法来获得相同的结果。我删除了我的两个列表视图并将其替换为具有两列的网格视图。这样我可以在不实现 onScrollListner 的情况下滚动两者,我什至可以使用我用于两个列表视图的自定义适配器。

于 2012-07-27T08:46:50.777 回答
0

发生这种情况是因为您将 listview 放入 listview :)

您可以使用它来解决您的问题。

假设 L1 在 L2 内,那么

L1.setOnTouchListener(new OnTouchListener() {

            @Override
            public boolean onTouch(View arg0, MotionEvent arg1) {

                if(arg1.getAction() == MotionEvent.ACTION_DOWN || arg1.getAction() == MotionEvent.ACTION_MOVE)
                {
                L2.requestDisallowInterceptTouchEvent(true);

                }
                return false;
            }
        });
于 2012-07-27T05:49:54.750 回答