掘金 | 简书 |
---|---|
掘金博客地址 | 简书博客地址 |
- 💬 Ask me about :Android开发攻城狮、熟java、会Flutter、懂Python、玩Compose、鸿蒙也能玩
- 📫 How to reach me: [email protected]
:point_right: Customize the LayoutManager of RecyclerView(自定义LayoutManager)
掘金 | 简书 |
---|---|
掘金博客地址 | 简书博客地址 |
可以做到viewpager那样子预加载下面的item吗
PickerLayoutManager的界面和SlideLayoutManager的界面重叠
java.lang.IndexOutOfBoundsException: Invalid item position 0(0). Item count:0 android.support.v7.widget.RecyclerView{196c0bf2 VFED.... ......I. 0,0-0,0 #7f090085 app:id/recycler1}, adapter:com.example.slmg.fragments.PickerFragment$MyAdapter@2dd10243, layout:com.example.lmg.lib.PickerLayoutManager@338090c0, context:com.example.slmg.MainActivity@20df3294
at android.support.v7.widget.RecyclerView$Recycler.tryGetViewHolderForPositionByDeadline(RecyclerView.java:5885)
at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:5858)
at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:5854)
at com.example.lmg.lib.PickerLayoutManager.onMeasure(PickerLayoutManager.java:68)
at android.support.v7.widget.RecyclerView.onMeasure(RecyclerView.java:3321)
at android.view.View.measure(View.java:17430)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5463)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1436)
at android.widget.LinearLayout.measureHorizontal(LinearLayout.java:1083)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:615)
at android.view.View.measure(View.java:17430)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5463)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:430)
at android.support.v7.widget.CardView.onMeasure(CardView.java:260)
at android.view.View.measure(View.java:17430)
at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:727)
at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:463)
at android.view.View.measure(View.java:17430)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5463)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:430)
at android.view.View.measure(View.java:17430)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5463)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1436)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:722)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:613)
at android.view.View.measure(View.java:17430)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5463)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:430)
at android.support.v7.widget.ContentFrameLayout.onMeasure(ContentFrameLayout.java:143)
at android.view.View.measure(View.java:17430)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5463)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1436)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:722)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:613)
at android.view.View.measure(View.java:17430)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5463)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:430)
at android.view.View.measure(View.java:17430)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5463)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1436)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:722)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:613)
at android.view.View.measure(View.java:17430)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5463)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:430)
at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2560)
at android.view.View.measure(View.java:17430)
at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2001)
at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1166)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1372)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1054)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5779)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:767)
com.example.lmg.lib.PickerLayoutManager#onMeasure中出错:
View view = recycler.getViewForPosition(0);
越界,修改如下之后:
if (getItemCount() != 0 && mItemCount != 0 && state.getItemCount() > 0) {
View view = recycler.getViewForPosition(0);
measureChildWithMargins(view, widthSpec, heightSpec);
}
测量的结果又有问题
滑动时会报这个错误信息, An instance of OnFlingListener already set.
这个地方怎么释放的是index位置而不是position位置?
@OverRide
public void onPageRelease(boolean isNext, int position) {
Log.e(TAG,"onPageRelease()......position = " + position + "-isNext = "+ isNext);
int index = 0;
if (isNext){
index = 0;
}else {
index = 1;
}
releaseVideo(index);
}
PickLayoutManager在com.android.support:recyclerview-v7:28.0.0版本上,RecyclerVIew的高度设置无效了,将整个RecyclerVIew都显示出来了,而且第一次默认选中的不是postion为0 的item了,不知道RecyclerView在28版本上有做什么更新。
太高了..,看了源码好像也没有用到高版本sdk...
可以改低点
ViewPagerLayoutManager 横向列表。滑动时,每次onPageSelected调用的时候,我会重新赋值RV新数据,刷新视图。
现在快速滑动的时候onPageSelected()就不会调用。
往左滑很快没问题,往右滑会出现不调用的情况。
在再用雷电模拟器打开这个app时,第一个界面(首页),在来回滑动列表时,电脑内存的占用,会有明显的增高。如果不断的滑动,电脑内存的占用会一直增加到99%。在此反馈一下问题给博主。
SkidRightLayoutManager ;滑动几个发生内存溢出错误
我是用模拟器测得;
Hi, really it is a great library.I am using this and struck in one situation.set video path from url rather than assets or raw folder.I am able to set but how to show progress bar while loading and are you provide any progress while video buffering and are you provide any method for download.
Wating for your replay.
thanks for reading
如题
抖音效果往上翻页时,会出现同时播放两个视频
java.lang.IndexOutOfBoundsException: Invalid item position 0(0). Item count:0 android.support.v7.widget.RecyclerView{901d672 VFED..... .F....I. 0,0-0,0 #7f0800c6 app:id/recycler1}, adapter:com.dingmouren.example.layoutmanagergroup.fragment.PickerFragment$MyAdapter@34b3ac3, layout:com.dingmouren.layoutmanagergroup.picker.PickerLayoutManager@8c19f40, context:com.dingmouren.example.layoutmanagergroup.MainActivity@21e0b16
at android.support.v7.widget.RecyclerView$Recycler.tryGetViewHolderForPositionByDeadline(RecyclerView.java:5779)
at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:5752)
at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:5748)
at com.dingmouren.layoutmanagergroup.picker.PickerLayoutManager.onMeasure(PickerLayoutManager.java:69)
at android.support.v7.widget.RecyclerView.onMeasure(RecyclerView.java:3210)
at android.view.View.measure(View.java:23279)
...
因为 SlideLayoutManager 中 item 设置了setOnTouchListener()导致在adapter 中item 中其他点击事件不能处理 这个有什么思路去解决吗
private View.OnTouchListener mOnTouchListener = new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
RecyclerView.ViewHolder childViewHolder = mRecyclerView.getChildViewHolder(v);
if (event.getAction() == MotionEvent.ACTION_DOWN) {
mItemTouchHelper.startSwipe(childViewHolder);
}
return false;
}
};
I can press the first card but the rest I can not
hi this is a very good layout manger but i want to know how i can set horizontal scrolling to left with skidlayoutmanger rest everything is great.
我现在数据是动态获取的 需要在合适的时机加载更多数据进来
机型:vivo-x20
系统:android8.0
问题描述:运行后recyclerview左边折叠部分被手机屏幕边界挡住了,而且我在item布局里面设置了margin也无效,在小米手机6.0系统没问题
你可以下载一个Top Life 应用看一下,里面的T课堂。写写了。急用呢。我的邮箱是[email protected]
最近在做浏览器多标签功能 (类似UC浏览器多标签)我想借鉴EchelonLayoutManager这个用来做 但是发现往下拉的时候 第二个item 遮住后面的第三个item有点多了 我想让后面item 多漏出来一点 方便点击 请问具体改哪里?在线等 急。。。
viewHolder.getAdapterPosition() keeps return -1. How can i get postion of item that were slidded?
int position = viewHolder.getAdapterPosition();
Log.e(TAG, "onSlided--position:" + position);
Caused by: java.io.IOException: CreateProcess error=2, 系统找不到指定的文件。
at java.lang.ProcessImpl.create(Native Method)
at java.lang.ProcessImpl.(ProcessImpl.java:386)
at java.lang.ProcessImpl.start(ProcessImpl.java:137)
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1029)
... 33 more
my code
adapter= new MessagingAdapter(messagesList,getActivity(), databaseHelper.nameUser(),usersList );
//rvListMessage.setHasFixedSize(true);
mSkidRightLayoutManager = new SkidRightLayoutManager(1.5f, 0.85f);
rvListMessage.setLayoutManager(mSkidRightLayoutManager);
rvListMessage.setAdapter(adapter);
java.lang.ArithmeticException: divide by zero
at com.dingmouren.layoutmanagergroup.skidright.SkidRightLayoutManager.fill(SkidRightLayoutManager.java:77)
at com.dingmouren.layoutmanagergroup.skidright.SkidRightLayoutManager.onLayoutChildren(SkidRightLayoutManager.java:73)
at android.support.v7.widget.RecyclerView.dispatchLayoutStep2(RecyclerView.java:3812)
at android.support.v7.widget.RecyclerView.dispatchLayout(RecyclerView.java:3529)
at android.support.v7.widget.RecyclerView.onLayout(RecyclerView.java:4082)
at android.view.View.layout(View.java:17778)
at android.view.ViewGroup.layout(ViewGroup.java:5575)
at android.support.design.widget.CoordinatorLayout.layoutChild(CoordinatorLayout.java:1191)
at android.support.design.widget.CoordinatorLayout.onLayoutChild(CoordinatorLayout.java:876)
at android.support.design.widget.CoordinatorLayout.onLayout(CoordinatorLayout.java:895)
at android.view.View.layout(View.java:17778)
at android.view.ViewGroup.layout(ViewGroup.java:5575)
at android.support.v4.widget.SwipeRefreshLayout.onLayout(SwipeRefreshLayout.java:606)
at android.view.View.layout(View.java:17778)
at android.view.ViewGroup.layout(ViewGroup.java:5575)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323)
at android.widget.FrameLayout.onLayout(FrameLayout.java:261)
at android.view.View.layout(View.java:17778)
at android.view.ViewGroup.layout(ViewGroup.java:5575)
at android.widget.RelativeLayout.onLayout(RelativeLayout.java:1079)
at android.view.View.layout(View.java:17778)
at android.view.ViewGroup.layout(ViewGroup.java:5575)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323)
at android.widget.FrameLayout.onLayout(FrameLayout.java:261)
at android.view.View.layout(View.java:17778)
at android.view.ViewGroup.layout(ViewGroup.java:5575)
at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1741)
at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1585)
at android.widget.LinearLayout.onLayout(LinearLayout.java:1494)
at android.view.View.layout(View.java:17778)
at android.view.ViewGroup.layout(ViewGroup.java:5575)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323)
at android.widget.FrameLayout.onLayout(FrameLayout.java:261)
at android.view.View.layout(View.java:17778)
at android.view.ViewGroup.layout(ViewGroup.java:5575)
at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1741)
at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1585)
at android.widget.LinearLayout.onLayout(LinearLayout.java:1494)
at android.view.View.layout(View.java:17778)
at android.view.ViewGroup.layout(ViewGroup.java:5575)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323)
at android.widget.FrameLayout.onLayout(FrameLayout.java:261)
at com.android.internal.policy.DecorView.onLayout(DecorView.java:727)
at android.view.View.layout(View.java:17778)
at android.view.ViewGroup.layout(ViewGroup.java:5575)
at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2353)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2075)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1261)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6345)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:874)
at android.view.Choreographer.doCallbacks(Choreographer.java:686)
at android.view.Choreographer.doFrame(Choreographer.java:621)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:860)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6125)
at java.lang.reflect.Method.invoke(Method.java:-2)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:893)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:783)
在滚动到下一个视频时,onLayoutComplete()会多次调用,导致多次调用playVideo(int)。
使用垂直ViewpagerlayoutManager播放视频,退出当前界面到后台,然后再次切换到前台,会出现黑屏,请问这个该如何处理?
Process: com.dingmouren.example.layoutmanagergroup, PID: 18719
java.lang.OutOfMemoryError: Failed to allocate a 921612 byte allocation with 783352 free bytes and 764KB until OOM
at com.bumptech.glide.gifdecoder.GifDecoder.setData(GifDecoder.java:380)
at com.bumptech.glide.load.resource.gif.GifDrawable.(GifDrawable.java:92)
at com.bumptech.glide.load.resource.gif.GifDrawable$GifState.newDrawable(GifDrawable.java:368)
at com.bumptech.glide.load.resource.drawable.DrawableResource.get(DrawableResource.java:32)
at com.bumptech.glide.load.resource.drawable.DrawableResource.get(DrawableResource.java:16)
at com.bumptech.glide.load.engine.EngineResource.get(EngineResource.java:44)
at com.bumptech.glide.request.GenericRequest.onResourceReady(GenericRequest.java:487)
at com.bumptech.glide.load.engine.Engine.load(Engine.java:155)
at com.bumptech.glide.request.GenericRequest.onSizeReady(GenericRequest.java:449)
at com.bumptech.glide.request.target.ViewTarget$SizeDeterminer.getSize(ViewTarget.java:211)
at com.bumptech.glide.request.target.ViewTarget.getSize(ViewTarget.java:100)
at com.bumptech.glide.request.GenericRequest.begin(GenericRequest.java:272)
at com.bumptech.glide.manager.RequestTracker.runRequest(RequestTracker.java:37)
at com.bumptech.glide.GenericRequestBuilder.into(GenericRequestBuilder.java:661)
at com.bumptech.glide.GenericRequestBuilder.into(GenericRequestBuilder.java:697)
at com.dingmouren.example.layoutmanagergroup.activity.SkidRightActivity_1$MyAdapter.onBindViewHolder(SkidRightActivity_1.java:89)
at com.dingmouren.example.layoutmanagergroup.activity.SkidRightActivity_1$MyAdapter.onBindViewHolder(SkidRightActivity_1.java:68)
at android.support.v7.widget.RecyclerView$Adapter.onBindViewHolder(RecyclerView.java:6279)
at android.support.v7.widget.RecyclerView$Adapter.bindViewHolder(RecyclerView.java:6312)
at android.support.v7.widget.RecyclerView$Recycler.tryBindViewHolderByDeadline(RecyclerView.java:5258)
at android.support.v7.widget.RecyclerView$Recycler.tryGetViewHolderForPositionByDeadline(RecyclerView.java:5521)
at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:5363)
at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:5359)
at com.dingmouren.layoutmanagergroup.skidright.SkidRightLayoutManager.fill(SkidRightLayoutManager.java:128)
生命周期过长了,锤子机型
请问想实现无限循环需要从哪里入手
使用 SlideLayoutManager 布局无法显示在视图中
切换Fragment时,会出现IndexOutOfBoundsException,似乎PickerLayoutManager的onMeasure方法中,不能用getItemCount,而要用state.getItemCount()来判断
无限点击点赞效果的时候有时候会自动跑到下一页 这个是什么原因造成的呢?
作者您好,我今天使用您的LayoutManagerGroup时,添加com.github.DingMouRen:LayoutManagerGroup:643fb71c8e这个依赖使用不了,请问一下是这个远程的库已经不存在了吗?
我在视频播完之后调用Recyclerview.smoothScrollToPosition 自动往下滑动,然后在监听onscroll在回调videorelease的时候用可能childcount=3的情况 这样的话你释放资源获取的item position就会有问题
请教大佬,如果要像抖音一样可以左滑进入作者的详情页,那这个效果应该怎么布局?
java.lang.OutOfMemoryError: Failed to allocate a 960012 byte allocation with 225520 free bytes and 220KB until OOM
at com.dingmouren.example.layoutmanagergroup.activity.SkidRightActivity_1$MyAdapter.onBindViewHolder(SkidRightActivity_1.java:89)
at com.dingmouren.example.layoutmanagergroup.activity.SkidRightActivity_1$MyAdapter.onBindViewHolder(SkidRightActivity_1.java:68)
layoutManager 设置 监听的时候 onPageSelected 和 onLayoutComplete 为什么都是 playVideo(0) ?
不是要根据位置去播视频吗 还有为什么这两个回调都要去播? 没太看明白,求指点
数据全部已经加载出来了,为什么始终滑不动呢?
请问 怎么做到提前缓存下一条
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.