KunMinX 专注 “业务架构”,致力消除敏捷开发过程中 “不可预期问题”。
kunminx / linkage-recyclerview Goto Github PK
View Code? Open in Web Editor NEW即使不用饿了么订餐,也请务必收藏好该库!🔥 一行代码即可接入,二级联动订餐列表。
即使不用饿了么订餐,也请务必收藏好该库!🔥 一行代码即可接入,二级联动订餐列表。
KunMinX 专注 “业务架构”,致力消除敏捷开发过程中 “不可预期问题”。
请勿跟帖,如有 issue,请另外开辟一个新帖。本帖专用于总结网友提过的问题和我提供的答疑。
我这边设置的GridMode,这个footer特别影响UI,好像没有看到相关去掉的api,大神能把这个去掉吗。
就现在的业务需求来说,个人觉得很多的场景都不需要这个footer
作者你好,公司项目是一个点餐app,点击+号添加菜品,菜品数量+1,-号出现
代码:holder.getView(R.id.iv_goods_subtract).setVisibility(View.VISIBLE); holder.getView(R.id.tv_select_num).setVisibility(View.VISIBLE);
打印日志确实只执行了一次点击事件,但是会出现其他分类的几个菜品也出现菜品数量+1,-号出现的情况。这是第一个问题,item状态设置不正确。
滑动列表整个列表后,所有已经点击出现的菜品数量+1,-号都消失了,整个列表恢复成了初始化那样的,这是第二个问题。item状态无法保存。
Dear Sir,
Thanks for your very nice library Linkage-RecyclerView . However, when I add the reference to gradle :
implementation 'com.kunminx.linkage:linkage-recyclerview:1.9.0'
then when i try to define below object:
private FragmentElemeBinding mBinding;
I get below error:
error: cannot find symbol class FragmentElemeBinding
This class seems not included into the library.
在Demo中,YoumiStoreSampleFragment --》右边adapter 的删除功能按钮点击事件中取值是直接用了position,然后在删除功能中,删除这个position的item,最后调用了notifyItemRemoved来刷新适配器,第一次删除是没问题的,但是后面再删除的时候position会不对,因为使用了notifyItemRemoved 来刷新,但是adapter中的position是final修饰不会改变的,所以后面删除position都会错乱,应该在删除取值的时候使用hold.getAdapterPosition的值
holder.getView(R.id.iv_goods_add).setOnClickListener(v -> {
removeItem(holder.getAdapterPosition());
});
layout_linkage_view.xml中左侧组列表的宽度目前貌似是100dp固定的:
<androidx.recyclerview.widget.RecyclerView android:id="@+id/rv_primary" android:layout_width="100dp" android:layout_height="match_parent" />
感觉改成配置比较好,毕竟每个设备上表现不太一样。
因为BaseGroupedItem.ItemInfo没有实现Serializable接口,造成ItemInfo无法序列化
我用手机安装了一下demo左边的列表跨条目点击的时候特别卡顿 而且动画的延时感觉太长了 没有饿了么过渡的顺畅
左边列表能不能添加多个控件,怎么添加。
或者怎么实现我自己的ViewHolder
1.右侧RecycleView的HeaderView和公用的浮动的HeaderView,不是同一个view,如果我要在HeaderView新增字段(如header显示个数,但是左侧不显示个数),这样我就必须修改库的源码,添加公用的浮动的HeaderView显示个数的代码;
2.点击左侧RecycleView的最后一个item,左侧会依次滚动到最后一个,右侧也会依次滚动,当我数据比较多的时候,滚动时间会比较长,影响体验。
数据操作怎么办?加一个或减一个 group 或 item 怎么刷新?
现在你可以通过 LinkageRecyclerView 拿到一二级 adapter,并通过拿到 adapter 的数据,来完成数据的操作和列表的刷新。(具体可以参考 YoumiStoreSampleFragment)
demo里没有YoumiStoreSampleFragment
可以提供sample程序吗?方便给公司同事展示效果。
非常感谢作者的开源。
Demo 设置以后有的列表可以联动 有的不行
这个是要和后台配合才能做到的,然而实际情况是后台有他们的框架或者做法,这就有一定的局限性
我看了一下,好像没有提供方法,指定item 显示到顶部
因为有一个需要是:
指定某个产品显示在顶部。所以需要这条item滚动到顶部
当一级选项的数据比较多,超过一个屏幕,滑动二级选项或者直接滑动一级选项可看到数据显示有问题
将Linkage-RecyclerView放在dialog里面加载,每次dimiss之后,在打开.二级菜单的底部footview都会增加一个,每次都增加一个?这是啥bug为什么之后底部的footview会重复加载数据?其他的都显示正常
首先感谢您的分享!
我再开发中遇到了一个强转的问题
com.kunminx.linkage.bean.DefaultGroupedItem cannot be cast to com.ruwei.*****.view.bean.FoodGroupedItem
无论是通过linkage.getSecondaryAdapter().getItems()拿到数据还是直接操作数据源都会出现此问题;
FoodGroupedItem是继承自BaseGroupedItem;
报错代码:FoodGroupedItem item =(FoodGroupedItem ) mDatas.get(i);
作者您好!
我再使用中遇到了个刷新的问题
数据源只做clear和addAll操作
linkage.getPrimaryAdapter().notifyDataSetChanged();
linkage.getSecondaryAdapter().notifyDataSetChanged();
上述代码不起作用
感谢
我在改的过长中 end布局去掉后 在GREATPHONE 这个fragment 中 上拉到最后2个时候 ,二级recylerview 的header 顶不上去 就卡在 倒数第二个 i 这个地方了
// the following logic can not be perfect, because tvHeader's title may not
// always equals to the title of selected primaryItem, while there
// are several groups which has little items to stick group item to tvHeader.
//
// To avoid to this extreme situation, my idea is to add a footer on the bottom,
// to help wholly execute this logic.
//
// Note: 2019.5.22 KunMinX
if (groupNameChanged) {
List<String> groupNames = mPrimaryAdapter.getStrings();
for (int i = 0; i < groupNames.size(); i++) {
if (groupNames.get(i).equals(mLastGroupName)) {
mPrimaryAdapter.setSelectedPosition(i);
RecyclerViewScrollHelper.smoothScrollToPosition(mRvPrimary,
LinearSmoothScroller.SNAP_TO_END, i);
}
}
}
看了好久不清楚这段注释在说处理什么样的情况?
#45 在Demo中,使用源数据个数都是双数.刚好填满2列数据. 如果在源数据个数单双数不确定的情况下,还是会出现无法判断column的问题..研究了几天还是没研究出来
需要分页加载数据,该如何处理滑动二级列表或者点击一级标题如何加载
想实现自定义Header,而不是单纯的一个TextView.
尝试过更改Header所在的Layout文件,但是只能TextView有"被顶上去"的效果,其余View则无办法"被顶上去"
设置模式为GridMode模式,并且SPAN_COUNT_FOR_GRID_MODE为2时,当最后一行不到2个item,那么最后一行的item就会很长。demo是由于item的背景色跟底部的背景色一致所以看不出问题,当将demo中adapter_eleme_secondary_grid.xml的背景色设置为其他颜色,可以很快看出问题。
Process: com.kunminx.linkagelistview, PID: 9368 java.lang.IndexOutOfBoundsException: Index: 0, Size: 0 at java.util.ArrayList.get(ArrayList.java:411) at com.kunminx.linkage.LinkageRecyclerView.initLinkageSecondary(LinkageRecyclerView.java:168) at com.kunminx.linkage.LinkageRecyclerView.init(LinkageRecyclerView.java:299) at com.kunminx.linkagelistview.ui.ElemeSampleFragment.lambda$onViewCreated$0$ElemeSampleFragment(ElemeSampleFragment.java:80) at com.kunminx.linkagelistview.ui.-$$Lambda$ElemeSampleFragment$hd8Xu7jn5TF8Lkwto2wiclv4fms.onClick(lambda) at android.view.View.performClick(View.java:5657) at android.view.View$PerformClick.run(View.java:22453) 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:6119) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)
我将demo 的fragment的代码转换为kotlin的,遇到LinkageRecyclerView.init(),第一个方法参数列表无法转换。
截图
作者:
数据适配要么我们自己后台按照您demo定制接口(兼顾多端不太可能)
要么自己看源码扩展数据适配吗?看源码短时间也摸不透 短时间内没法使用啊 建议作者数据适配能不能介绍下扩展方法
任何缺乏实证依据和因果逻辑的泛泛而谈,都可能对其他使用者造成困扰。
在发表个人见解前,请先确保自己认真阅读过源码。这是对自己、对作者、对其他读者最起码的尊重。
你好 我发现这个库再系统5.1.1的时候onBindViewHolder一直执行很多次,麻烦帮忙看看呢
1.关于一级菜单和二级菜单具体的联动是怎么实现的?
2.二级菜单的滑动以及Title怎么处理?
。。表示能力有限,源码看了挺久的还是没想明白。!!
购物车清空后我想刷新列表,使用
LinkageSecondaryAdapter secondaryAdapter = linkage.getSecondaryAdapter();
secondaryAdapter.notifyDataSetChanged();
不刷新,使用secondaryAdapter.initData(groupedItems);也不刷新
研究源码的过程中,测试发现的。不算大问题,算是一个小瑕疵。顺便感谢下作者~
当数据量大了,一个header里面有十几个itemInfo,然后有几十个header,而且iteminfo的数据是通过header中的id获取的,这样在initLinkageDatas要循环请求iteminfo,请问这样会造成卡顿嘛
实在看不出 “继承接口” 和 “局限于 JSON 数据” 有何因果关系。
JSON 只是结构化数据的方式之一,LinkageRecyclerView 并没有强制要求数据来源一定是 JSON,无论 XML,JSON,protocol buffer 还是何种方式,只要在能在移动端解析成 List 即可。
此外,数据分组依赖于抽象类中仅有的几个必填字段,用户自定义的 XXXGroupedItem 须继承于抽象类 BaseGroupedItem。
Originally posted by @KunMinX in #1 (comment)
你好
List<***> items = linkage.getSecondaryAdapter().getItems();
在获取适配器中的数据后遍历报错:
java.lang.ClassCastException: com.kunminx.linkage.bean.DefaultGroupedItem cannot be cast to ***
这种错误,得不到想要的实体类
可以给解答一下吗
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.