Code Monkey home page Code Monkey logo

lrecyclerview's Issues

Called attach on a child which is not detached: ViewHolder...

这个问题,一般在发生在上拉加载更多,有时候下拉刷新也会。关于这个问题,发现你在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)

fragment

分页时setFooterViewState 方法能否用到fragment里面,好像没找到相应代码

怎么获取滚动状态

LRecyclerView.setLScrollListener(LScrollListener listener);
接口方法里无法获取页面滚动的状态。
×××××××××
我需要做的是,当页面不滚动时才去加载数据。我需要知道页面的滚动状态。
或者你有别的好的想法也可以。谢谢!!!

封装尽量简洁一些,

尽量不要暴漏太多的操作,比如: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包,你行不行啊

侧滑删除

侧滑删除有个很大的问题,删第一条还正确,当删第二条的时候就会自动删除第三条,第二条并没删,再删第二条的时候又接着删第三条。。。看到请麻烦速度回复解决一下。。鄙人太菜没弄出来。。因为项目用的就是你的这个侧滑删除

设置标志

首次设置 RecyclerViewStateUtils.setFooterViewState时 就直接跳到了末尾?

Entity的作用是什么

public abstract class Entity implements Serializable{
    public int id;
    public int type; // content type
}

这个类中 id 和 type 的作用是什么 ? 我查看引用到的地方,都不是和LRecyclerView实现所必须的,那么为什么还需要这两个属性呢 ?

还有,这个Entity类能改为接口形式么 ? 有时候对象是继承自其它类的,不方便再继承Entity

onBottom

建议换个名字,希望作者采纳

文字显示没有及时更新

拉到底后显示"已经到底了",这个时候在做下拉操作,然后在上拉操作,会先看到"已经到底了",然后再变成“正在加载中”

分割线问题

当添加分割线时 下拉刷新的View下也有一条个分割线显示, 应该没有

添加Header卡顿问题

添加了ViewPager作为头部,上滑一小段至头部刚好不可见,然后用手指按住向下拖动,在经过头部时会卡住

下拉刷新样式问题

setRefreshProgressStyle 时候,progress 的颜色能换吗

如何自定义 下拉的样式,没有发现对外设置 view 的方法

布局文件无法正常渲染:Rendering Problems Error occurred while trying to setup RecyclerView.

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隐藏,同时显示列表视图。现在是,只要emptyview出现了,列表视图就没有办法显示。翻了下源码,LRecyclerView这个类,DataObserver里面的onChanged只有在setAdapter的时候才会调用。目前自用的版本,新增了一个public方法,把DataObserver的成员变量暴露出去,然后有需要再调用。
eg.
public void onDataChange ()
{
mDataObserver.onChanged();
}

建议

我认真研究了代码,我感觉LRecyclerView里面的代码有点混乱,而且ViewPager和Item的Swipe功能可以抽取出来,再自定义两个RecyclerView类。

在上拉下拉时,滑动不够流畅

上拉下拉时,没有recyclerView的流畅,用力一拉,手指离开屏幕时滑动就停止,recyclerview则在手指离开屏幕的时候还能根据惯性滑动一些距离。

footView有一个显示方面的小问题

只要调用了RecyclerViewStateUtils里面的方法setFooterViewState,就会把footView的状态改成显示。这样会导致一个问题,比如强制下拉刷新(把数据清除,然后notifyxxxxx),这个时候,界面就会看到上次设置的footerview的内容,因为状态已经设置为visiable。也就是说,如果有请求数据,那么先会闪现footerview的内容,然后再显示列表视图,这样用户体验不好。目前自用版本做法还是暴露一个方法,可以从外部设置footerview的显示状态,但感觉不是十分优雅。。。

关于color的问题

这几个命名在Android使用比较普遍
colorPrimary
colorPrimaryDark
colorAccent

由于我项目中的style、color文件是放在单独的module中的,引入LRecyclerView后,导致会先加载LRecyclerView的color。

希望在LRecyclerView中,将这几个命名改为其他的

Demo滑动不流畅

表现为小距离滑动时,偶有出现滑动失效,大幅度滑动没有问题

下拉刷新高度有问题!

情况是这样,我在设置好了下拉刷新后,先用力下拉,然后惯性滑到底部,再用力上拉回到顶部,反复几次通过惯性到顶部的 “正在刷新”这个header高度有问题
image
如图,希望能尽快解决

api设计的一些建议

先要感谢作者的开源项目,已经在项目中用到了,嘿嘿
1,接口尽量小一点,比如LScrollListener建议拆分成几个小接口,或者使用抽象
2,增加一些自定义属性,比如刷新的样式,这些可以xml中指定
3,new LRecyclerViewAdapter(mAdapter), RecyclerViewStateUtils.setFooterViewState这类的操作可以抽取为LRecycleView的api,使用工具类会增加使用成本
4,AVLoadingIndicatorView的颜色好像没有提供api或者属性,外部不知道怎么去改颜色
不知道提的对不对,只是个人的看法.

这个能显示滚动条吗?

原来用的是pullLoadMoreRecyclerView,结果发现不能显示滚动条。现在想换这个,用之前得问问

建议

建议做成任意view下拉刷新和上滑加载更多

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.