我有两个列表视图。我需要自动滚动一个列表视图 滚动其他列表视图时。两个列表视图都应具备此功能
我在两个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滚动时它不起作用。两者都保持不变)
提前致谢
答案 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)
这是你的应用程序,所以你可以做任何你想做的事情,但我对你想要实现的目标感到困惑。拥有两个列表视图的唯一想法是分别表示两种不同类别的数据,以便可以单独访问(滚动或选择)它们。
如果您需要表示需要并排显示的两类数据作为列表,那么您可以拥有一个包含两列的列表行。
这样的事情会起作用:
您可以使用不同类型的数据填充这两行,这可以一起滚动。
答案 2 :(得分:0)
我发现了一种获得相同结果的不同方法。我删除了我的两个列表视图并替换它 带有两列的网格视图。这样我可以在不实现onScrollListner的情况下滚动它们,我甚至可以使用我用于两个列表视图的自定义适配器。