Comments (10)
When you are logging the elements can you also check if itemView is null or not? Are you looping through the elements after the form has been rendered and displayed or before? My only guess is that itemView is null and cannot set visibility = View.GONE for that element. Which kind of form element is it?
from kformmaster.
Its a FormMultiLioneEditTextElement.
I am looping through after being displayed.
ItemView is NOT null and I can loop through the code that sets visibility to GONE (BaseFormElement line 239).
from kformmaster.
I think it might be the cache size then. Are you using addFormElements() to add form elements? If not, you should call setItems() after you modify the elements list. This will make sure the cache size is correct and notifyDataSetChanged is called.
from kformmaster.
So I call FormBuilder with just the activity (it used to have automeasure but thats gone) like this:
formBuilder = FormBuildHelper(activity!!)
formBuilder.attachRecyclerView(activity!!, recyclerView)
then I loop through my questions, creating elements as I go and then add them:
formBuilder.addFormElements(elements)
Apart from the first question, I make all of them visible = false. Then, as they answer questions I can check the answer and decide which elements to make visible.
The issue is changes to previously answered questions need questions after it to be made invisible again (because answering questions differently might mean making other questions visible).
So, based on your comment I tried this:
when (formElement) {
is FormPickerDropDownElement -> formElement.setVisible(false)
is FormMultiLineEditTextElement -> {
formElement.setVisible(false)
}
}
formBuilder.setItems()
that made no difference. Any ideas?
from kformmaster.
Could it be that the field has focus? https://stackoverflow.com/a/28467157/4056401
Call currentFocus?.clearFocus() before your loop to hide the elements.
from kformmaster.
On what class?
from kformmaster.
when (formElement) {
is FormPickerDropDownElement -> {
formElement.editView?.clearFocus()
formElement.setVisible(false)}
is FormMultiLineEditTextElement -> {
formElement.editView?.clearFocus()
formElement.setVisible(false)
}
}
didn't work (also tried itemView which returns a view)
from kformmaster.
Hmm. I really don't know. Seems like an Android problem. Caching the RecylerView should have resolved most of the weirdness for each dynamic view in the list.
from kformmaster.
Caching is the default anyway?
from kformmaster.
Yes. But apparently it does not solve all of the issues with using a RecylerView for a form.
from kformmaster.
Related Issues (20)
- ucrop sub-dependency 2.2.4 no longer exists HOT 1
- Header & Label background color HOT 3
- How to update height of segmented Button HOT 9
- upgrade RendererRecyclerViewAdapter dependency HOT 1
- Crash HOT 2
- Request: Allow to set the focus on an element HOT 2
- Use ListAdapter/notifyItem*Changed instead of notifyDataSetChanged HOT 2
- Recommendation for usage
- Build failed: Duplicate key: (row=string, column=action_cancel) HOT 4
- Segment appears on new line and does not return proper values HOT 3
- Not firing onValueChanged on FormSegmentedElement HOT 2
- displayValueFor in FormPickerMultiCheckBoxElement HOT 3
- Migrate to Maven Central HOT 13
- Multiline Editext Scroll
- Can't able to access that FormBuilderHelper's listener variable. HOT 2
- Not working with latest version of Dhaval2404/ImagePicker HOT 1
- Setting FormButtonElement margin in FormBuilder init has no effect HOT 2
- Error in jitpack HOT 2
- findViewById(R.id.chatRecyclerView) must not be null
- MultiLineEditTextElement PickerDropDownElement doesn't work correctly with multi line
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from kformmaster.