列表视图不能平滑滚动

时间:2012-07-27 05:23:09

标签: android

我有两个列表视图。我需要自动滚动一个列表视图 滚动其他列表视图时。两个列表视图都应具备此功能

我在两个listviews中实现了onScrollListner

for listview 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);
    }

}

for listview 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);
    }

}

我有2个问题

1 - 列表不能平滑滚动。 (不像normall listview)

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

提前致谢

3 个答案:

答案 0 :(得分: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;
            }
        });

答案 1 :(得分:0)

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


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

答案 2 :(得分:0)

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