2012-07-27 100 views
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); 
    } 

} 

我有一个关于这个

2个问题

1 - 列表不滚动顺畅。 (不喜欢normall列表视图)

2 - 我只能滚动使用一个列表视图两个列表视图(当我滚动使用L2 都得到滚动但是当我滚动使用L1它不工作都留固定。)

在此先感谢

回答

0

它发生becoz你把里面的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; 
      } 
     }); 
0

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


可以填充这两行与不同种类的数据,这可以滚动起来。

+0

你的回答让我思考不一样。我使用网格视图修复了我的问题。谢谢 – 2012-07-27 08:43:15

+0

网格视图是一个更好的选择。使用网格视图处理点击不同的列项目会更容易。 :) – karn 2012-07-28 05:12:50

0

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