Git Product home page Git Product logo

youlookwhat / byrecyclerview Goto Github PK

View Code? Open in Web Editor NEW
779.0 14.0 136.0 7.3 MB

🔥 RecyclerView 下拉刷新、上拉松手/自动加载更多、item点击/长按、item局部刷新、头布局/尾布局/状态布局、万能分割线、Skeleton骨架图、极简adapter、嵌套滑动置顶

Home Page: https://youlookwhat.github.io/ByRecyclerView

License: Apache License 2.0

Java 89.43% Kotlin 10.57%
byrecyclerview recyclerview itemdecoration headerview swiperefreshlayout adapter-databinding skeleton xrecyclerview brvah-xrecyclerview

byrecyclerview's Introduction

byrecyclerview's People

Contributors

bean-liu avatar youlookwhat avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

byrecyclerview's Issues

不怎么好用

不怎么好用
上拉加载更多要拉两次,才会触发loadmore
是因为外层签到ScrollView 的关系吗?
无语

只有一项内容的时候 底部会有空项

当我监听了上拉加载更多的时候 如果当前只有一个项 底部会多一个空白的项
setNotFullScreenNoLoadMore() 我也设置了的 但是这个只能禁止上拉 空白的项还是在

flexbox布局没法添加emptyview

报错如下
E/>>>>>>: java.lang.ClassCastException: androidx.recyclerview.widget.RecyclerView$LayoutParams cannot be cast to com.google.android.flexbox.FlexItem at com.google.android.flexbox.FlexboxHelper.calculateFlexLines(FlexboxHelper.java:438) at com.google.android.flexbox.FlexboxHelper.calculateHorizontalFlexLines(FlexboxHelper.java:242) E/>>>>>>: at com.google.android.flexbox.FlexboxLayoutManager.updateFlexLines(FlexboxLayoutManager.java:940) at com.google.android.flexbox.FlexboxLayoutManager.onLayoutChildren(FlexboxLayoutManager.java:716) at androidx.recyclerview.widget.RecyclerView.dispatchLayoutStep2(RecyclerView.java:4134) at androidx.recyclerview.widget.RecyclerView.onMeasure(RecyclerView.java:3540) at android.view.View.measure(View.java:25448) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6884) at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1552) at android.widget.LinearLayout.measureVertical(LinearLayout.java:842) at android.widget.LinearLayout.onMeasure(LinearLayout.java:721) at android.view.View.measure(View.java:25448) at androidx.core.widget.NestedScrollView.measureChildWithMargins(NestedScrollView.java:1599) at android.widget.FrameLayout.onMeasure(FrameLayout.java:194) at androidx.core.widget.NestedScrollView.onMeasure(NestedScrollView.java:585) at android.view.View.measure(View.java:25448) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6884) at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1552) at android.widget.LinearLayout.measureVertical(LinearLayout.java:842) at android.widget.LinearLayout.onMeasure(LinearLayout.java:721) at android.view.View.measure(View.java:25448) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6884) at android.widget.FrameLayout.onMeasure(FrameLayout.java:194) at androidx.appcompat.widget.ContentFrameLayout.onMeasure(ContentFrameLayout.java:146) at android.view.View.measure(View.java:25448) E/>>>>>>: at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6884) at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1552) at android.widget.LinearLayout.measureVertical(LinearLayout.java:842) at android.widget.LinearLayout.onMeasure(LinearLayout.java:721) at android.view.View.measure(View.java:25448) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6884) at android.widget.FrameLayout.onMeasure(FrameLayout.java:194) at android.view.View.measure(View.java:25448) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6884) at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1552) at android.widget.LinearLayout.measureVertical(LinearLayout.java:842) at android.widget.LinearLayout.onMeasure(LinearLayout.java:721) at android.view.View.measure(View.java:25448) E/>>>>>>: at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6884) at android.widget.FrameLayout.onMeasure(FrameLayout.java:194) at android.view.View.measure(View.java:25448) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6884) at android.widget.FrameLayout.onMeasure(FrameLayout.java:194) at com.android.internal.policy.DecorView.onMeasure(DecorView.java:739) at android.view.View.measure(View.java:25448) at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:3361) at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:2203) at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2460) at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1934) at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:8127) at android.view.Choreographer$CallbackRecord.run(Choreographer.java:972) at android.view.Choreographer.doCallbacks(Choreographer.java:796) at android.view.Choreographer.doFrame(Choreographer.java:731) at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:957) at android.os.Handler.handleCallback(Handler.java:938) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:223) at com.kongzue.baseframework.BaseFrameworkSettings$1.run(BaseFrameworkSettings.java:52) at android.os.Handler.handleCallback(Handler.java:938) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:223) at android.app.ActivityThread.main(ActivityThread.java:7523) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:941) W/Looper: Loop again would have the queued messages be executed before this one completed.

关于置顶的问题

有个问题想请教作者
按照demo的演示关于那个 Recyclerview嵌套滑动置顶 的问题。如果点击隐藏广告悬浮位。那么此时的parentRecyclerView.setStickyListener(…)就监听不到置顶tab栏置顶的状态了
还有就是当Tab栏。按照你的demo中“Recyclerview嵌套滑动置顶”就是那个“关注”的Fragment的页面我一直往上滑动 比如这个Fragment的RecyclerView里面有100个item。我一直滑倒第50个 然后我切换到 “推荐的那个页面” 此时推荐的这个Fragment页面的RecyclerView的滑倒位置是0 我在再次往下滑 此时的Tab栏已经没有置顶了 也就说要把全部包括刚才的“关注”的Fragment 里面的滑倒高度设置为0 请问这个怎么做到呀。我看京东首页就是这样做的 意思没有置顶了 把全部设置为0

GridItemDecoration使用问题

当GridLayoutManager设置为Horizontal时,GridItemDecoration第一个和第二个条目的宽高绘制出错。有关代码和布局见附件。

includeEdge = false
includeEdge = true
GridLayout 水平方向
activity布局
条目布局

item悬浮问题

如果给ByRecyclerView设置marginTop,item悬浮时依旧在顶部

HookedScroller android11问题

HookedScroller这个类中的durationField属性,在android11使用时报错反射问题:Caused by: java.lang.reflect.InvocationTargetException

感谢开源

大神的库不错,目前功能相对其他类似的库还是有点少,如:头部悬浮吸顶功能,设置滑动列表动画,item滑动删除等,不知道大神有考虑增加这些功能吗?

StateView好像不能设置居中

比如在保持HeaderView显示的时候StateView会超过屏幕的高度,这个时候其实我还是希望StateView里面的内容在RV剩下的区域居中,并且不能上下滑动。请问有什么好的办法吗?

条目点击后的水波纹效果如何设置?

作者你好,你的demo里有几个样例,有的点击会出现水波纹荡漾效果,有的则没有,我对比了几处代码,没发现关键区别。
我自己写了几个页面,都没出现波纹效果。请问具体是在哪个地方可以实现?

上拉加载更多的bug

当你手指触碰屏幕上拉,一直到最后一个item显示出来,再继续上拉,(整个过程手指没有放开过),这个时候就会出现一个空白区块,而且也没有触发加载更多,个人认为,没有触发加载更多,应该要回弹,防止出现一个空白区块!
TIM截图20200509150830

下拉刷新的问题

基于demo RecyclerView 嵌套滑动置顶那个页面, 如果addHeaderView只添加一个头部。 那么如果需要下拉刷新的话只能手指滑动那个头部的View 才能下拉 至于下面的ViewPager2 就不能下拉刷新了 这是怎么回事呀大佬

关于置顶的问题

有个问题想请求作者
按照demo的演示关于那个 Recyclerview嵌套滑动置顶 的问题。如果点击隐藏广告悬浮位。那么此时的parentRecyclerView.setStickyListener(…)就监听不到置顶tab栏置顶的状态了
还有就是当Tab栏。按照你的demo中“Recyclerview嵌套滑动置顶”就是那个“关注”的Fragment的页面我一直往上滑动 比如这个Fragment的RecyclerView里面有100个item。我一直滑倒第50个 然后我切换到 “推荐的那个页面” 此时推荐的这个Fragment页面的RecyclerView的滑倒位置是0 我在再次往下滑 此时的Tab栏已经没有置顶了 也就说要把全部包括刚才的“关注”的Fragment 里面的滑倒高度设置为0 请问这个怎么做到呀。我看京东首页就是这样做的 意思没有置顶了 把全部设置为0

gridLayoutManager.setSpanSizeLookup会发生错乱?

gridLayoutManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
@OverRide
public int getSpanSize(int position) {
//TODO:需要区分单张/多张 所占的位置,
if (position == 0) {
return 6;
}
if (position > 2 && position < 5) {
return 3;
}
return 2;
}
});

配置这个操作之后分割线显示错乱

The specified child already has a parent. You must call removeView() on the child's parent first.

java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.
at android.view.ViewGroup.addViewInner(ViewGroup.java:5150)
at android.view.ViewGroup.addView(ViewGroup.java:4979)
at android.view.ViewGroup.addView(ViewGroup.java:4919)
at android.view.ViewGroup.addView(ViewGroup.java:4892)
at me.jingbin.library.ByRecyclerView.setStateView(ByRecyclerView.java:925)
at cn.yh.sdmp.ui.message.MessageFragment.initView(MessageFragment.java:121)
at com.zipper.lib.base.fragment.BaseFragment.onViewCreated(BaseFragment.java:72)
at com.zipper.lib.base.fragment.BaseRvFragment.onViewCreated(BaseRvFragment.java:46)
at androidx.fragment.app.FragmentStateManager.createView(FragmentStateManager.java:332)
at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1187)
at androidx.fragment.app.FragmentManager.addAddedFragments(FragmentManager.java:2224)

有个bug

使用 recycleview.setStateView(R.layout.statu_loading) 搭配 DiffUtil 会报错
java.lang.IndexOutOfBoundsException: Inconsistency detected. Invalid view holder adapter positionSimpleViewHolder

setLoadMoreEnabled() & addData() 导致异常

setLoadMoreEnabled() & addData(),2 个 Api 一起调用,会导致 IndexOutOfBoundsException 异常;

Adapter 使用的 BaseRecyclerAdapter 的子类;

场景:分页场景下,LoadMore 至最后一页时,addData() 的同时,需调用 setLoadMoreEnabled(false) 禁用 LoadMore;

java.lang.IndexOutOfBoundsException: Inconsistency detected. Invalid view holder adapter positionSimpleViewHolder{347ed11 position=18 id=-1, oldPos=16, pLpos:16 scrap [attachedScrap] tmpDetached no parent}

问题解答

你好,想跟你探讨一下你的项目,方便联系吗?

不知道有人用过ObservableList 监听修改数据没

这里有个无法理解的东西,使用ObservableList通过监听自动刷新数据的时候,
首先,new 一个空的ObservableList 对象 赋值到 adapter 并set(list 在adapter中adddatachangeCallback ,在对应方法调用对应的刷新方法),之后search 刷新数据,先clear 然后 addAll(), 如果没有设置loadmorelistener 的话它是正常刷新数据并从第一条显示的,
但是,现在setLoadmoreListener 之后,刷新数据会导致显示到最后一条,并且loadmore view的位置也占用显示了(但是没显示文字,也没触发loadmore),这无法理解

瀑布流添加分割线的问题

首次加载动态获取item宽度按比例计算item高度,item的左右间距会有问题,重新刷新一次数据就好了

关于回到顶部

在demo中的coordinatorLayout嵌套滑动置顶例子中,想问下要在加一个一键回到顶部并且下拉刷新怎么做到,对viewPager2内部的recyclerView使用scrollToPosition(0)时,只能到TabLyout部分,头部的appBarLayout里面的无法到顶部

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.