大佬教程收集整理的这篇文章主要介绍了使用Android构建动态表单的解决方案,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
{ "fields": [ { "name": "fieldA","type": "StriNG","minCharacters": 10,"maxCharacters": 100 },{ "name": "FieldB","type": "IntegeR","min": 10,"max": 100 },{ "name": "fieldC","type": "BooleAN_checKBox","DefaultValue": true } ... ],"name": "Form A" }@H_419_4@当应用程序收到其中一个JSON文档时,我实际上正在做的是它遍历每个字段并将其解析到适当的视图(EditText,checkBox,自定义视图等),向视图添加标记(将是能够轻松检索它并将视图添加到LinearLayout.这是一个伪代码,它实际上是如何工作的:
//Add form title linearLayout.addView(new TextView(form.Name)); //Add form fields for(Field field: form.fields) { View view; switch(field.typE){ case StriNG: view = new EditText(); ... } view.setTag(field.id); linearLayout.addView(view); }@H_419_4@这个问题是,对于大型表单(例如> 20个字段),它需要充斥大量视图,并且UI线程会受到很多影响.另一点需要考虑的是,单个屏幕可能有多种形式(一个接一个地垂直排序). @H_419_4@为了避免重载UI线程我想到了2个可能的解决方案:
@H_419_4@>使用RecyclerView.
>使用Litho by Facebook.
@H_419_4@>使用Litho是一个很好的用例吗?或者使用RecyclerView就足够了?
>我的观点如何?如果我使用回收模式,我是否能够保持每个字段的状态(甚至是屏幕外的那些字段),从而能够在不丢失数据的情况下保存表单?
>如果我使用回收模式显示一个表单,我将如何处理多个表单?我们可以嵌套RecyclerView吗?表格需要像在垂直房车内一个接一个地显示,但如果表格本身是房车,我应该如何处理?
@H_419_4@在此先感谢您的时间.
@H_419_4@为什么我们需要这样做:GC是最昂贵的操作,会导致应用渲染抖动,我们尝试通过不清除视图来最小化要调用的GC
@H_419_4@为此,我想使用光刻,理由是here因为你的要求似乎有更多的变量counttypesreference@H_419_4@结论:Litho 1,RecyclerView 0
@H_419_4@> Saving EditText content in RecyclerView这是一个组件,但同样的逻辑应该应用于复选框或radiobutton.或者在石油的状态维护中是here@H_419_4@结论:Litho 1,RecyclerView 1都有特定的API来实现状态维护
@H_419_4@>这必须通过用户体验和技术能力来解决:根据用户行为恕我直言,我不鼓励嵌套垂直滚动,但其他人能够实现它,你可以很容易地找到如何在SO中.最佳解决方案是在Andriod或Litho的回收站视图中将水平滚动设置为here@H_419_4@注意:如果您需要了解实施细节,请将其作为单独的问题提出,我很乐意为您提供帮助
@H_419_4@更新#1:@H_419_4@必须在后端执行UI创建/布局,只需在UI线程上添加视图即可.并且光盘做到了in-built.然而同样可以实现原生回收者视图,但是你必须离开UI线程并定期发布到UI.
以上是大佬教程为你收集整理的使用Android构建动态表单的解决方案全部内容,希望文章能够帮你解决使用Android构建动态表单的解决方案所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。