向下滚动时 Android 更新 ListView
Posted
技术标签:
【中文标题】向下滚动时 Android 更新 ListView【英文标题】:Android Update ListView on scrolling down 【发布时间】: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_UP
和 ACTION_DOWN
表示手指从屏幕上按压和抬起,而不是滚动
你应该为此设置 onScrollListener。
@tompok 当您使用 setOnScrollListener 时会发生什么,您的 onScrollStateChanged 是否正在执行?
@BrijeshJoshi 是的正在执行
尝试将getConnections()方法放入onScroll方法中,并在其中放置一些日志并检查它是否onScroll方法以及您的方法是否正在执行?
【参考方案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 你可以把你的列表视图放在滚动视图中。 你可以在这里看到你的问题的解决方案-***.com/questions/16791100/…。 那我该怎么办?以上是关于向下滚动时 Android 更新 ListView的主要内容,如果未能解决你的问题,请参考以下文章
Android ListView 在向下滚动时显示不正确的内容,然后在向上滚动时显示正确的内容
Android - 在 ListView 中滚动时滚动出/折叠元素
listitem中的Android listview imageview在滚动时隐藏