【问题标题】:Android paging GridView/ListView? [closed]Android分页GridView/ListView? [关闭]
【发布时间】:2016-03-22 00:44:49
【问题描述】:

我正在寻找一个库或一些帮助我解决一些代码的问题。我需要一个类似于 ViewPager 的 GridView 或 ListView,但在每次滑动时会显示尽可能多的项目。基本上,如果我有 300 个项目,而我一次只能显示 5 个,我希望能够向下滑动并显示 5 个,然后在下一次滑动时显示下一个 5。我确信这是可能的,但我该如何开始呢?

【问题讨论】:

    标签: android android-listview android-viewpager android-gridview


    【解决方案1】:

    我找到了解决办法:

    基本上,我设置了一个普通的 GridView(大约 300 个项目)并在您单击它时以编程方式滚动。我不得不使用 OnItemClick,因为您不能将常规 OnClick 侦听器与 AdapterView(GridView、ListView 等)一起使用

    View.OnTouchListener gridDisableScroll = new View.OnTouchListener() {
                @Override
                public boolean onTouch(View view, MotionEvent motionEvent) {
                    if(motionEvent.getAction() == MotionEvent.ACTION_MOVE){
                        return true;
                    }
                    return false;
                }
            };
    AdapterView.OnItemClickListener gridClickScroll = new AdapterView.OnItemClickListener() {
    
                @Override
                public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
                    if(((GridView)adapterView).getLastVisiblePosition()
                             == adapterView.getAdapter().getCount()-1) {
                         //if you're at the bottom, scroll to the top!
                         ((GridView)adapterView).smoothScrollToPosition(0);
                    } else {
                        //scroll down the distance of the height of the GridView
                        ((GridView) adapterView).smoothScrollBy(adapterView.getMeasuredHeight(), 700);//700ms
                        //may not be necessary...force draw after scrolling
                        adapterView.invalidate();
                    }
                }
            }; 
    

    【讨论】:

      【解决方案2】:

      在您的 ListView 中,使用 setOnScrollListener 类设置滚动侦听器。然后,在您的滚动侦听器中,处理方法onScroll

      @Override
      public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
          // ...
      }
      

      请注意,您有用于确定用户是否滚动到底部的参数 - 如果是,则加载下一页项目并将它们添加到您的适配器。

      【讨论】:

      • 问题是它已经加载了。我希望能够尽可能多地显示用户可以看到的内容,然后向下滚动,它会自动捕捉到另一组项目,直到用户可以看到的内容。现在更有意义了吗?
      猜你喜欢
      • 2011-05-25
      • 1970-01-01
      • 2014-03-25
      • 1970-01-01
      • 1970-01-01
      • 2017-04-13
      • 1970-01-01
      • 2014-11-19
      • 1970-01-01
      相关资源
      最近更新 更多