NestedScrollView内部的RecyclerView ViewHolder创建
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了NestedScrollView内部的RecyclerView ViewHolder创建相关的知识,希望对你有一定的参考价值。
我有两个由同一来源引起的问题。我正在使用一个社交媒体应用程序,我的个人资料视图包含个人资料图片的CollapsingToolbarLayout
和帖子供稿的RecyclerView
内的NestedScrollView
。
我没想到的行为是,我在RecyclerView中有20个帖子,并且屏幕只能显示3个帖子,Recycler适配器创建20个视图支架,它们都被视为可见。
这给我造成两个问题:1-帖子可能包含视频,如果该帖子在屏幕上不可见,我希望停止播放视频。我曾经在其他RecyclerViews上执行过此操作。
@Override
public void onViewDetachedFromWindow(@NonNull RecyclerView.ViewHolder holder)
if (holder instanceof PostViewHolder)
PostViewHolder postViewHolder = (PostViewHolder) holder;
pauseVideo(postViewHolder.videoPlayer);
永远不会调用此方法,因为RecyclerView或适配器或任何认为所有视图持有者在屏幕上可见的方法。为确保我的假设正确,我登录了onViewAttachedToWindow
,如果该列表包含20条帖子,则在将列表添加到RecyclerView时,它将被调用20次。
2-我希望帖子可以动态加载(滚动加载小批量)。这是使用这种方法实现的:
WrapContentLinearLayoutManager llManager = new WrapContentLinearLayoutManager(this, LinearLayoutManager.VERTICAL, false);
recyclerView.setLayoutManager(llManager);
recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener()
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy)
if(dy > 0) //check for scroll down
if (llManager.findFirstVisibleItemPosition() + 10 > llManager.getItemCount() && !loadingMorePosts)
loadingMorePosts = true;
dbListeners.getMoreUserPosts();
);
这也不起作用,因为llManager.findFirstVisibleItemPosition()
总是返回0。
我是在做错什么,还是嵌套ScrollView中RecyclerView的预期行为?还有第二个问题的解决方案或解决方法,因为一次加载所有帖子是不可接受的。
和谢谢。
您必须在nesterscroll视图的滚动侦听器中处理分页
以上是关于NestedScrollView内部的RecyclerView ViewHolder创建的主要内容,如果未能解决你的问题,请参考以下文章
NestedScrollView内部的RecyclerView ViewHolder创建
如何在CollapsingToolbar中使用Map的点击事件
Android Kotlin:null 不能转换为非 null 类型 com.android.app.ui.category.CategoryAdapter.ViewHolder 想要在 recycl
当在nestedscrollview的recyclerview中将项目拖出可见空间时-nestedscrollView不滚动