我在一个android应用程序中有一个问题,到目前为止我还没有想出一个解决方案。可能有明显的东西,我错过了,所以也许有人可以为我提出一个好的解决办法。
因此,基本上,我有两个并排的GridViews在一个水平布局。左边的GridView是一个列,右边的GridView动态地调整列数以适应屏幕。左GridView基本上是右侧GridView的一个以编程方式填充的行标题列。我之所以这样做,是因为我正在构建一个具有一定行数的表,而不是水平滚动所有列(由于用户可以添加更多列的数目未知),我需要它到达屏幕的边缘,然后创建一个空行,然后包装继续使用这些列。首先,我使用了一个GridView,并在第一列中添加了标题信息,但是我遇到了各种非常复杂的代码,用于确定在我的自定义适配器中放置哪些数据,以及在适配器中的getCount(),以确保创建了适当数量的单元格,包括空白单元格。
现在我有了两个GridViews,一切都按照我想要的方式工作,而不是滚动。我希望两个GridViews在滚动时一起滚动(或尽可能接近同一时间)。下面是我的滚动代码,它不像预期的那样工作:
mRightGrid.setOnScrollListener(new AbsListView.OnScrollListener() {
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem,
int visibleItemCount, int totalItemCount) {
mLeftGrid.smoothScrollToPosition((firstVisibleItem / mRightGridColumns) + 1);
}
});
mLeftGrid.setOnScrollListener(new AbsListView.OnScrollListener() {
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem,
int visibleItemCount, int totalItemCount) {
mLeftGrid.smoothScrollToPosition((firstVisibleItem * mRightGridColumns) + 1);
}
}); 希望这样做的意图是,如果右侧网格中有10列,并且该网格被滚动,那么位置30 (第三行的第一个单元格)是第一个可见项,那么左侧网格应该滚动到位置2 (30 /10-1= 2),即左侧网格视图第三行上的单元格。所以这不像我预期的那样,我想知道是否真的有一种方法来评估滚动体的实际y位置,每次网格被移动时,并将同样的y位置应用到另一个网格中,我认为它实际上会工作,并提供良好的同步滚动结果。
发布于 2013-10-31 14:25:27
因此,我最终还是咬紧牙关,回到一个网格视图中,在复杂的代码中挣扎,因为无论我如何尝试滚动,在另一个网格被捕获之前总是有一个滞后的,我只是无法找到一种同时顺利滚动两个网格视图的方法。
https://stackoverflow.com/questions/18025463
复制相似问题