【问题标题】:Android scrollTo() doesn't show new items for ListViewAndroid scrollTo() 不显示 ListView 的新项目
【发布时间】:2016-09-20 13:04:28
【问题描述】:

我正在尝试为自定义 ListView 实现一些逻辑。在其OnTouchListeneronTouch() 方法中,我检查是否满足某些条件,如果满足,则向上/向下滚动ListView,具体取决于用户手指的移动方向。现在,当我滚动ListView向下显示从底部开始的新项目,这些项目不会出现。每次拨打scrollTo() 时,我都尝试拨打ArrayAdapter.notifyDataSetChanged(),但它不起作用。我也用谷歌搜索了这个问题,但我找不到可靠的解决方案/解释。

这是一些代码示例:

@Override public boolean onTouch(final View v, MotionEvent event) {
                //Some code

                switch (event.getAction()) {
                    case MotionEvent.ACTION_MOVE:
                        deltaY = event.getRawY() - downY;
                        if(//Some condition) {
                        listView.scrollTo(0, (int) -deltaY);
                        isScrolling = true;
                }
                break;
            }

【问题讨论】:

    标签: android listview scroll


    【解决方案1】:

    请尝试在 notifyDataSetChanged 后执行 scrollTo 等待一秒钟。

    new Handler(Looper.getMainLooper()).postDelayed(new Runnable() {
        @Override
        public void run() {
           listView.scrollTo(0, (int) -deltaY);
        }
    }, 300)
    

    【讨论】:

      【解决方案2】:

      您可以使用 scrollListBy 代替 scrollTo。但是这个有一个限制,只能在KitKat以上版本使用。像这样使用它:-

      listView.post(new Runnable() {
          @Override
          public void run() {
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
                  listView.scrollListBy((int) -deltaY);
             }
          }
      });
      

      【讨论】:

      • 谢谢,但我不能真正依赖它,因为我也需要它来处理低版本
      • 嘿,我已经在 KitKat 下面搜索了解决此问题的方法,但我什么也没得到 :(
      • 感谢您的尝试,我很感激 :) @Rahul Sonpaliya
      猜你喜欢
      • 1970-01-01
      • 2017-05-09
      • 1970-01-01
      • 1970-01-01
      • 2018-06-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多