jdsjlzx / lrecyclerview Goto Github PK
View Code? Open in Web Editor NEWRecyclerView下拉刷新,自动加载更多;仿IOS侧滑Item删除菜单(盼望大家扩展更多功能)
Home Page: http://blog.csdn.net/jdsjlzx/article/details/51794220
License: Apache License 2.0
RecyclerView下拉刷新,自动加载更多;仿IOS侧滑Item删除菜单(盼望大家扩展更多功能)
Home Page: http://blog.csdn.net/jdsjlzx/article/details/51794220
License: Apache License 2.0
这个问题,一般在发生在上拉加载更多,有时候下拉刷新也会。关于这个问题,发现你在EndlessLinearLayoutActivity.java,87行中有加这么一句代码:mLRecyclerViewAdapter.notifyDataSetChanged();
但是这样并不能解决问题。具体原因没有去研究。说说我的解决方法(使用了项目中的:ListBaseAdapter)。ListBaseAdapter中的setDataList、addAll、remove、clear方法中,都有notifyxxxx方法,经过试验。有两种解决方法:
(1)删除上述方法里面的notifyxxxx方法。在调用上述方法之后,紧接着调用xxxadapter.notifyDataSetChanged方法;
(2)可以保留上述方法里面的notifyxxxx方法,在调用上述方法之后,紧接着调用xxxadapter.notifyDataSetChanged方法。考虑到notify两次,所以不建议。
下面是具体的错误信息:
java.lang.IllegalArgumentException
Called attach on a child which is not detached: ViewHolder{742af16 position=40 id=-1, oldPos=-1, pLpos:-1}
1 android.support.v7.widget.RecyclerView$5.attachViewToParent(RecyclerView.java:692)
2 android.support.v7.widget.ChildHelper.attachViewToParent(ChildHelper.java:239)
3 android.support.v7.widget.RecyclerView.addAnimatingView(RecyclerView.java:1178)
4 android.support.v7.widget.RecyclerView.animateDisappearance(RecyclerView.java:3535)
5 android.support.v7.widget.RecyclerView$4.processDisappeared(RecyclerView.java:456)
6 android.support.v7.widget.ViewInfoStore.process(ViewInfoStore.java:246)
7 android.support.v7.widget.RecyclerView.dispatchLayoutStep3(RecyclerView.java:3385)
8 android.support.v7.widget.RecyclerView.dispatchLayout(RecyclerView.java:3135)
9 android.support.v7.widget.RecyclerView.onLayout(RecyclerView.java:3568)
10 android.view.View.layout(View.java:15718)
11 android.view.ViewGroup.layout(ViewGroup.java:5039)
12 android.widget.LinearLayout.setChildFrame(LinearLayout.java:1703)
13 android.widget.LinearLayout.layoutVertical(LinearLayout.java:1557)
14 android.widget.LinearLayout.onLayout(LinearLayout.java:1466)
15 android.view.View.layout(View.java:15718)
16 android.view.ViewGroup.layout(ViewGroup.java:5039)
17 android.widget.FrameLayout.layoutChildren(FrameLayout.java:579)
18 android.widget.FrameLayout.onLayout(FrameLayout.java:514)
19 android.view.View.layout(View.java:15718)
20 android.view.ViewGroup.layout(ViewGroup.java:5039)
21 android.widget.LinearLayout.setChildFrame(LinearLayout.java:1703)
22 android.widget.LinearLayout.layoutVertical(LinearLayout.java:1557)
23 android.widget.LinearLayout.onLayout(LinearLayout.java:1466)
24 android.view.View.layout(View.java:15718)
25 android.view.ViewGroup.layout(ViewGroup.java:5039)
26 android.widget.FrameLayout.layoutChildren(FrameLayout.java:579)
27 android.widget.FrameLayout.onLayout(FrameLayout.java:514)
28 android.view.View.layout(View.java:15718)
29 android.view.ViewGroup.layout(ViewGroup.java:5039)
30 android.widget.LinearLayout.setChildFrame(LinearLayout.java:1703)
31 android.widget.LinearLayout.layoutVertical(LinearLayout.java:1557)
32 android.widget.LinearLayout.onLayout(LinearLayout.java:1466)
33 android.view.View.layout(View.java:15718)
34 android.view.ViewGroup.layout(ViewGroup.java:5039)
35 android.widget.FrameLayout.layoutChildren(FrameLayout.java:579)
36 android.widget.FrameLayout.onLayout(FrameLayout.java:514)
37 android.view.View.layout(View.java:15718)
38 android.view.ViewGroup.layout(ViewGroup.java:5039)
39 android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2127)
40 android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1884)
41 android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1102)
42 android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5930)
43 android.view.Choreographer$CallbackRecord.run(Choreographer.java:769)
44 android.view.Choreographer.doCallbacks(Choreographer.java:582)
45 android.view.Choreographer.doFrame(Choreographer.java:552)
46 android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:755)
47 android.os.Handler.handleCallback(Handler.java:739)
48 android.os.Handler.dispatchMessage(Handler.java:95)
49 android.os.Looper.loop(Looper.java:135)
50 android.app.ActivityThread.main(ActivityThread.java:5298)
51 java.lang.reflect.Method.invoke(Native Method)
52 java.lang.reflect.Method.invoke(Method.java:372)
53 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:913)
54 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:708)
分页时setFooterViewState 方法能否用到fragment里面,好像没找到相应代码
LRecyclerView.setLScrollListener(LScrollListener listener);
接口方法里无法获取页面滚动的状态。
×××××××××
我需要做的是,当页面不滚动时才去加载数据。我需要知道页面的滚动状态。
或者你有别的好的想法也可以。谢谢!!!
可以给一个完整的demo慢慢看吗?
尽量不要暴漏太多的操作,比如:PreviewHandler封装起来,直接暴漏几个回调方法就可以了~
如题。除了value里面增加语言文件夹之外,或许可以像bugly一样,引用静态字符串。然后用户可以随时修改这个静态字符串,这种感觉会更加灵活
eg.
public class Beta extends a { public static final String TAG_IMG_BANNER = "beta_upgrade_banner"; public static final String TAG_TITLE = "beta_title"; public static final String TAG_UPGRADE_INFO = "beta_upgrade_info"; public static final String TAG_UPGRADE_FEATURE = "beta_upgrade_feature"; public static final String TAG_CANCEL_BUTTON = "beta_cancel_button"; public static final String TAG_CONFIRM_BUTTON = "beta_confirm_button"; public static final String TAG_TIP_MESSAGE = "beta_tip_message"; public static String strToastYourAreTheLatestVersion = "你已经是最新版了"; public static String strToastCheckUpgradeError = "检查新版本失败,请稍后重试"; public static String strToastCheckingUpgrade = "正在检查,请稍候..."; public static String strNotificationDownloading = "正在下载"; public static String strNotificationClickToView = "点击查看"; public static String strNotificationClickToInstall = "点击安装"; public static String strNotificationClickToRetry = "点击重试"; public static String strNotificationClickToContinue = "继续下载"; }
怎么搞的,非要应用24以上的v4包,你行不行啊
如题非要满屏才能上拉加载?
mLRecyclerViewAdapter = new LRecyclerViewAdapter(mContext, new RoadShowAdapter());
我自己的adapter是继承的BaseAdapter,这个不行吗?是必须继承new RoadShowAdapter(),这个加进去报错。
不知道是不是滑动时,焦点给item获取了?
LuRecyclerView 数据为空点击奔溃
侧滑删除有个很大的问题,删第一条还正确,当删第二条的时候就会自动删除第三条,第二条并没删,再删第二条的时候又接着删第三条。。。看到请麻烦速度回复解决一下。。鄙人太菜没弄出来。。因为项目用的就是你的这个侧滑删除
长按控件,弹起时会触发点击事件!
首次设置 RecyclerViewStateUtils.setFooterViewState时 就直接跳到了末尾?
public abstract class Entity implements Serializable{
public int id;
public int type; // content type
}
这个类中 id 和 type 的作用是什么 ? 我查看引用到的地方,都不是和LRecyclerView实现所必须的,那么为什么还需要这两个属性呢 ?
还有,这个Entity类能改为接口形式么 ? 有时候对象是继承自其它类的,不方便再继承Entity
非要填满整个屏幕才能以上的才能上拉加载?
建议换个名字,希望作者采纳
拉到底后显示"已经到底了",这个时候在做下拉操作,然后在上拉操作,会先看到"已经到底了",然后再变成“正在加载中”
当添加分割线时 下拉刷新的View下也有一条个分割线显示, 应该没有
添加了ViewPager作为头部,上滑一小段至头部刚好不可见,然后用手指按住向下拖动,在经过头部时会卡住
请问你的这个swip部分和https://github.com/yanzhenjie/SwipeRecyclerView/ 有什么区别
setRefreshProgressStyle 时候,progress 的颜色能换吗
如何自定义 下拉的样式,没有发现对外设置 view 的方法
java.lang.ClassCastException: com.android.layoutlib.bridge.android.support.Adapter cannot be cast to com.github.jdsjlzx.recyclerview.LRecyclerViewAdapter
at com.github.jdsjlzx.recyclerview.LRecyclerView.setAdapter(LRecyclerView.java:151)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:483)
at com.android.layoutlib.bridge.util.ReflectionUtils.invoke(ReflectionUtils.java:45)
at com.android.layoutlib.bridge.android.support.RecyclerViewUtil.setProperty(RecyclerViewUtil.java:126)
at com.android.layoutlib.bridge.android.support.RecyclerViewUtil.setProperty(RecyclerViewUtil.java:120)
at com.android.layoutlib.bridge.android.support.RecyclerViewUtil.setAdapter(RecyclerViewUtil.java:62)
at android.view.BridgeInflater.setupViewInContext(BridgeInflater.java:292)
at android.view.BridgeInflater.createViewFromTag(BridgeInflater.java:188)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:704)
at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
at android.view.LayoutInflater.inflate(LayoutInflater.java:394)
at com.android.layoutlib.bridge.impl.RenderSessionImpl.inflate(RenderSessionImpl.java:229)
at com.android.layoutlib.bridge.Bridge.createSession(Bridge.java:426)
at com.android.ide.common.rendering.LayoutLibrary.createSession(LayoutLibrary.java:350)
at com.android.tools.idea.rendering.RenderTask$2.compute(RenderTask.java:520)
at com.android.tools.idea.rendering.RenderTask$2.compute(RenderTask.java:508)
at com.intellij.openapi.application.impl.ApplicationImpl.runReadAction(ApplicationImpl.java:967)
at com.android.tools.idea.rendering.RenderTask.createRenderSession(RenderTask.java:508)
at com.android.tools.idea.rendering.RenderTask.access$600(RenderTask.java:75)
at com.android.tools.idea.rendering.RenderTask$3.call(RenderTask.java:620)
at com.android.tools.idea.rendering.RenderTask$3.call(RenderTask.java:617)
at com.android.tools.idea.rendering.RenderService.runRenderAction(RenderService.java:371)
at com.android.tools.idea.rendering.RenderTask.render(RenderTask.java:617)
at com.android.tools.idea.rendering.RenderTask.render(RenderTask.java:639)
at org.jetbrains.android.uipreview.AndroidLayoutPreviewToolWindowManager.doRender(AndroidLayoutPreviewToolWindowManager.java:654)
at org.jetbrains.android.uipreview.AndroidLayoutPreviewToolWindowManager.access$1700(AndroidLayoutPreviewToolWindowManager.java:82)
at org.jetbrains.android.uipreview.AndroidLayoutPreviewToolWindowManager$7$1.run(AndroidLayoutPreviewToolWindowManager.java:596)
at com.intellij.openapi.progress.impl.CoreProgressManager$2.run(CoreProgressManager.java:142)
at com.intellij.openapi.progress.impl.CoreProgressManager.registerIndicatorAndRun(CoreProgressManager.java:446)
at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:392)
at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:54)
at com.intellij.openapi.progress.impl.CoreProgressManager.runProcess(CoreProgressManager.java:127)
at org.jetbrains.android.uipreview.AndroidLayoutPreviewToolWindowManager$7.run(AndroidLayoutPreviewToolWindowManager.java:591)
at com.intellij.util.ui.update.MergingUpdateQueue.execute(MergingUpdateQueue.java:337)
at com.intellij.util.ui.update.MergingUpdateQueue.execute(MergingUpdateQueue.java:327)
at com.intellij.util.ui.update.MergingUpdateQueue$3.run(MergingUpdateQueue.java:271)
at com.intellij.util.ui.update.MergingUpdateQueue.flush(MergingUpdateQueue.java:286)
at com.intellij.util.ui.update.MergingUpdateQueue.flush(MergingUpdateQueue.java:244)
at com.intellij.util.ui.update.MergingUpdateQueue.run(MergingUpdateQueue.java:234)
at com.intellij.util.concurrency.QueueProcessor.runSafely(QueueProcessor.java:238)
at com.intellij.util.Alarm$Request$1.run(Alarm.java:352)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
有这么一个需求,刚刚进入界面的时候,显示emptyview,与此同时请求网络数据,网络数据请求回来之后,emptyview隐藏,同时显示列表视图。现在是,只要emptyview出现了,列表视图就没有办法显示。翻了下源码,LRecyclerView这个类,DataObserver里面的onChanged只有在setAdapter的时候才会调用。目前自用的版本,新增了一个public方法,把DataObserver的成员变量暴露出去,然后有需要再调用。
eg.
public void onDataChange ()
{
mDataObserver.onChanged();
}
如题
我认真研究了代码,我感觉LRecyclerView里面的代码有点混乱,而且ViewPager和Item的Swipe功能可以抽取出来,再自定义两个RecyclerView类。
上拉下拉时,没有recyclerView的流畅,用力一拉,手指离开屏幕时滑动就停止,recyclerview则在手指离开屏幕的时候还能根据惯性滑动一些距离。
只要调用了RecyclerViewStateUtils里面的方法setFooterViewState,就会把footView的状态改成显示。这样会导致一个问题,比如强制下拉刷新(把数据清除,然后notifyxxxxx),这个时候,界面就会看到上次设置的footerview的内容,因为状态已经设置为visiable。也就是说,如果有请求数据,那么先会闪现footerview的内容,然后再显示列表视图,这样用户体验不好。目前自用版本做法还是暴露一个方法,可以从外部设置footerview的显示状态,但感觉不是十分优雅。。。
这几个命名在Android使用比较普遍
colorPrimary
colorPrimaryDark
colorAccent
由于我项目中的style、color文件是放在单独的module中的,引入LRecyclerView后,导致会先加载LRecyclerView的color。
希望在LRecyclerView中,将这几个命名改为其他的
表现为小距离滑动时,偶有出现滑动失效,大幅度滑动没有问题
SectionLayoutActivity Demo中没有下拉刷新的功能,按照Demo中其他的例子加入下拉刷新的功能后,下拉界面会出现在第一个Section的下方。
先要感谢作者的开源项目,已经在项目中用到了,嘿嘿
1,接口尽量小一点,比如LScrollListener建议拆分成几个小接口,或者使用抽象
2,增加一些自定义属性,比如刷新的样式,这些可以xml中指定
3,new LRecyclerViewAdapter(mAdapter), RecyclerViewStateUtils.setFooterViewState这类的操作可以抽取为LRecycleView的api,使用工具类会增加使用成本
4,AVLoadingIndicatorView的颜色好像没有提供api或者属性,外部不知道怎么去改颜色
不知道提的对不对,只是个人的看法.
调用强制刷新forceToRefresh之后 为什么一直在刷新
原来用的是pullLoadMoreRecyclerView,结果发现不能显示滚动条。现在想换这个,用之前得问问
setEmptyView 后,列表被隐藏了,不能刷新
希望能支持EmptyView,在没有数据的情况也能支持下拉刷新。
不设置setOnItemClickLitener监听滑动就很顺畅,不会卡顿。
建议做成任意view下拉刷新和上滑加载更多
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.