首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >双GridView同步同步滚动

双GridView同步同步滚动
EN

Stack Overflow用户
提问于 2013-08-02 20:15:59
回答 1查看 370关注 0票数 1

我在一个android应用程序中有一个问题,到目前为止我还没有想出一个解决方案。可能有明显的东西,我错过了,所以也许有人可以为我提出一个好的解决办法。

因此,基本上,我有两个并排的GridViews在一个水平布局。左边的GridView是一个列,右边的GridView动态地调整列数以适应屏幕。左GridView基本上是右侧GridView的一个以编程方式填充的行标题列。我之所以这样做,是因为我正在构建一个具有一定行数的表,而不是水平滚动所有列(由于用户可以添加更多列的数目未知),我需要它到达屏幕的边缘,然后创建一个空行,然后包装继续使用这些列。首先,我使用了一个GridView,并在第一列中添加了标题信息,但是我遇到了各种非常复杂的代码,用于确定在我的自定义适配器中放置哪些数据,以及在适配器中的getCount(),以确保创建了适当数量的单元格,包括空白单元格。

现在我有了两个GridViews,一切都按照我想要的方式工作,而不是滚动。我希望两个GridViews在滚动时一起滚动(或尽可能接近同一时间)。下面是我的滚动代码,它不像预期的那样工作:

代码语言:javascript
复制
     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位置应用到另一个网格中,我认为它实际上会工作,并提供良好的同步滚动结果。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-10-31 14:25:27

因此,我最终还是咬紧牙关,回到一个网格视图中,在复杂的代码中挣扎,因为无论我如何尝试滚动,在另一个网格被捕获之前总是有一个滞后的,我只是无法找到一种同时顺利滚动两个网格视图的方法。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18025463

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档