Code: Select all
{
"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"
}
Code: Select all
//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);
}
Um eine Überlastung des UI-Threads zu vermeiden, habe ich mir zwei mögliche Lösungen überlegt:
- Verwenden einer RecyclerView.
- Verwenden von Litho von Facebook.
- Ist die Verwendung von Litho ein guter Anwendungsfall? Oder reicht die Verwendung einer RecyclerView aus?
- Was ist mit dem Status meiner Ansichten? Wenn ich ein Recycling-Muster verwende, kann ich dann den Status jedes meiner Felder (auch außerhalb des Bildschirms) beibehalten und so das Formular ohne Datenverlust speichern?
- Wenn ich ein Recycling-Muster verwende, um ein Formular anzuzeigen, wie gehe ich dann mit mehreren Formularen um? Können wir RecyclerView verschachtelt haben? Formulare müssen nacheinander wie in einem vertikalen RV angezeigt werden, aber wenn Formulare selbst RV sind, wie soll ich damit umgehen?
Vielen Dank im Voraus für Ihre Zeit.
Mobile version