【问题标题】:Android Update ListView on scrolling down向下滚动时 Android 更新 ListView
【发布时间】:2019-06-27 22:23:36
【问题描述】:

我想在向下滚动时更新我的​​ listView 我这样做:

mConnectionList.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {

            int action = event.getAction();
            switch (action) {
                case MotionEvent.ACTION_DOWN:
                    if( mConnectionList.getLastVisiblePosition() == connectionList.size()-1 ){
                        getConnections();
                    }
                    break;
                case MotionEvent.ACTION_UP:
                    isCrollingDown.set(false);
                    break;
                default:
            }
            return false;
        }
    });

但它不起作用,当我向下滚动时它会更新并在我向上滚动时更新

我也尝试这样做,但它也不起作用:

        mConnectionList.setOnScrollListener(new AbsListView.OnScrollListener() {



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

            }

            @Override
            public void onScrollStateChanged(AbsListView view, int scrollState) {

//                Log.e("a0","a " + mConnectionList.getLastVisiblePosition());
//                if(mConnectionList.getLastVisiblePosition() == connectionList.size()-1 ){
                    getConnections();
                }


            }
        });

【问题讨论】:

  • ACTION_UPACTION_DOWN 表示手指从屏幕上按压和抬起,而不是滚动
  • 你应该为此设置 onScrollListener。
  • @tompok 当您使用 setOnScrollListener 时会发生什么,您的 onScrollStateChanged 是否正在执行?
  • @BrijeshJoshi 是的正在执行
  • 尝试将getConnections()方法放入onScroll方法中,并在其中放置一些日志并检查它是否onScroll方法以及您的方法是否正在执行?

标签: android listview android-listview onscrolllistener


【解决方案1】:

试试这个方法向下滚动列表视图并选择最后一行,这样它就会 滚动到视图中。

 private void scrollListBottom() {
        myListView.post(new Runnable() {
            @Override
            public void run() {
                listView.setSelection(listAdapter.getCount() - 1);
            }
        });
    }

myListView.setOnTouchListener(new OnTouchListener() 
  @Override
    public boolean onTouch(View v, MotionEvent event) {
     v.getParent().requestDisallowInterceptTouchEvent(true);
     return false;
}

});

【讨论】:

  • 但我不想向下滚动列表,我想在用户向下滚动时注意到
【解决方案2】:

你应该这样尝试。

scrollView.setOnScrollChangeListener(new NestedScrollView.OnScrollChangeListener() {
    @Override
    public void onScrollChange(NestedScrollView v, int scrollX, int scrollY, int oldScrollX, int oldScrollY) {                  
        if (scrollY > oldScrollY) {
            Log.e("SCROLL", "Scroll DOWN"+scrollY);
        }
        if (scrollY < oldScrollY) {
            Log.e("SCROLL", "Scroll UP"+scrollY);
        }
        if (scrollY == 0) {
            Log.e("SCROLL", "TOP SCROLL"+scrollY);
        }
        if (scrollY == (v.getChildAt(0).getMeasuredHeight() - v.getMeasuredHeight())) {
            Log.e("SCROLL", "BOTTOM SCROLL"+scrollY);
        }
    }
});

使用它你可以检测你的滚动方向,然后更新你的列表 希望这会对你有所帮助。

【讨论】:

  • 但我有 listView 而不是 scrollView
  • 你可以把你的列表视图放在滚动视图中。
  • 你可以在这里看到你的问题的解决方案-stackoverflow.com/questions/16791100/…
  • 那我该怎么办?
猜你喜欢
  • 2019-06-14
  • 1970-01-01
  • 2018-12-16
  • 2016-06-08
  • 2012-08-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多