From ecadd91b7801f1489e43c9d6a9662fb69f56cd1c Mon Sep 17 00:00:00 2001 From: Victor kakama Date: Fri, 26 Oct 2018 13:52:38 +0300 Subject: [PATCH 1/7] return selected index on FormElementPickerSingle. This is useful when storing objects for selection --- .../formmaster/model/FormElementPickerSingle.java | 8 ++++++++ .../viewholder/FormElementPickerSingleViewHolder.java | 1 + 2 files changed, 9 insertions(+) diff --git a/form-master/src/main/java/me/riddhimanadib/formmaster/model/FormElementPickerSingle.java b/form-master/src/main/java/me/riddhimanadib/formmaster/model/FormElementPickerSingle.java index d592b45..698412d 100644 --- a/form-master/src/main/java/me/riddhimanadib/formmaster/model/FormElementPickerSingle.java +++ b/form-master/src/main/java/me/riddhimanadib/formmaster/model/FormElementPickerSingle.java @@ -12,6 +12,7 @@ public class FormElementPickerSingle extends BaseFormElement { private String pickerTitle; // custom title for picker private List mOptions; // list of options for single and multi picker private List mOptionsSelected; // list of selected options for single and multi picker + private int selectedIndex; public FormElementPickerSingle() { } @@ -76,4 +77,11 @@ public String getPickerTitle() { return this.pickerTitle; } + public int getSelectedIndex() { + return selectedIndex; + } + + public void setSelectedIndex(int selectedIndex) { + this.selectedIndex = selectedIndex; + } } diff --git a/form-master/src/main/java/me/riddhimanadib/formmaster/viewholder/FormElementPickerSingleViewHolder.java b/form-master/src/main/java/me/riddhimanadib/formmaster/viewholder/FormElementPickerSingleViewHolder.java index 21be938..f089226 100644 --- a/form-master/src/main/java/me/riddhimanadib/formmaster/viewholder/FormElementPickerSingleViewHolder.java +++ b/form-master/src/main/java/me/riddhimanadib/formmaster/viewholder/FormElementPickerSingleViewHolder.java @@ -55,6 +55,7 @@ public void bind(final int position, BaseFormElement formElement, final Context public void onClick(DialogInterface dialog, int which) { mEditTextValue.setText(options[which]); mFormElementPickerSingle.setValue(options[which].toString()); + mFormElementPickerSingle.setSelectedIndex(which); mReloadListener.updateValue(position, options[which].toString()); } }) From 16cd92c191d2f31d22f198516841337726867ec9 Mon Sep 17 00:00:00 2001 From: Victor kakama Date: Fri, 26 Oct 2018 13:53:08 +0300 Subject: [PATCH 2/7] formarting --- .../fastformbuilder/FormListenerActivity.java | 41 ++++++++++--------- 1 file changed, 21 insertions(+), 20 deletions(-) diff --git a/app/src/main/java/me/riddhimanadib/fastformbuilder/FormListenerActivity.java b/app/src/main/java/me/riddhimanadib/fastformbuilder/FormListenerActivity.java index a11f8b4..6432b68 100644 --- a/app/src/main/java/me/riddhimanadib/fastformbuilder/FormListenerActivity.java +++ b/app/src/main/java/me/riddhimanadib/fastformbuilder/FormListenerActivity.java @@ -6,26 +6,13 @@ import android.support.v7.widget.RecyclerView; import android.view.MenuItem; import android.widget.Toast; +import me.riddhimanadib.formmaster.FormBuilder; +import me.riddhimanadib.formmaster.listener.OnFormElementValueChangedListener; +import me.riddhimanadib.formmaster.model.*; import java.util.ArrayList; import java.util.List; -import me.riddhimanadib.formmaster.FormBuilder; -import me.riddhimanadib.formmaster.listener.OnFormElementValueChangedListener; -import me.riddhimanadib.formmaster.model.BaseFormElement; -import me.riddhimanadib.formmaster.model.FormElementPickerDate; -import me.riddhimanadib.formmaster.model.FormElementPickerMulti; -import me.riddhimanadib.formmaster.model.FormElementPickerSingle; -import me.riddhimanadib.formmaster.model.FormElementPickerTime; -import me.riddhimanadib.formmaster.model.FormElementSwitch; -import me.riddhimanadib.formmaster.model.FormElementTextEmail; -import me.riddhimanadib.formmaster.model.FormElementTextMultiLine; -import me.riddhimanadib.formmaster.model.FormElementTextNumber; -import me.riddhimanadib.formmaster.model.FormElementTextPassword; -import me.riddhimanadib.formmaster.model.FormElementTextPhone; -import me.riddhimanadib.formmaster.model.FormElementTextSingleLine; -import me.riddhimanadib.formmaster.model.FormHeader; - public class FormListenerActivity extends AppCompatActivity implements OnFormElementValueChangedListener { private RecyclerView mRecyclerView; @@ -88,9 +75,19 @@ private void setupForm() { fruits.add("Orange"); fruits.add("Mango"); fruits.add("Guava"); - FormElementPickerSingle element41 = FormElementPickerSingle.createInstance().setTitle("Single Item").setOptions(fruits).setPickerTitle("Pick any item"); - FormElementPickerMulti element42 = FormElementPickerMulti.createInstance().setTitle("Multi Items").setOptions(fruits).setPickerTitle("Pick one or more").setNegativeText("reset"); - FormElementSwitch element43 = FormElementSwitch.createInstance().setTitle("Frozen?").setSwitchTexts("Yes", "No"); + + FormElementPickerSingle element41 = FormElementPickerSingle.createInstance() + .setTitle("Single Item") + .setOptions(fruits) + .setPickerTitle("Pick any item"); + FormElementPickerMulti element42 = FormElementPickerMulti.createInstance() + .setTitle("Multi Items") + .setOptions(fruits) + .setPickerTitle("Pick one or more") + .setNegativeText("reset"); + FormElementSwitch element43 = FormElementSwitch.createInstance() + .setTitle("Frozen?") + .setSwitchTexts("Yes", "No"); List formItems = new ArrayList<>(); formItems.add(header1); @@ -114,6 +111,10 @@ private void setupForm() { @Override public void onValueChanged(BaseFormElement formElement) { - Toast.makeText(this, formElement.getValue(), Toast.LENGTH_SHORT).show(); + if (formElement instanceof FormElementPickerSingle) { + Toast.makeText(this, formElement.getValue() + " " + ((FormElementPickerSingle) formElement).getSelectedIndex(), Toast.LENGTH_SHORT).show(); + } else { + Toast.makeText(this, formElement.getValue(), Toast.LENGTH_SHORT).show(); + } } } From d698b7885279f7506858de5b47f9835e3c8fbac2 Mon Sep 17 00:00:00 2001 From: Victor kakama Date: Fri, 26 Oct 2018 13:53:37 +0300 Subject: [PATCH 3/7] sample object will be used for testing object lists in a single selection --- .../fastformbuilder/model/Student.java | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 app/src/main/java/me/riddhimanadib/fastformbuilder/model/Student.java diff --git a/app/src/main/java/me/riddhimanadib/fastformbuilder/model/Student.java b/app/src/main/java/me/riddhimanadib/fastformbuilder/model/Student.java new file mode 100644 index 0000000..ba9985c --- /dev/null +++ b/app/src/main/java/me/riddhimanadib/fastformbuilder/model/Student.java @@ -0,0 +1,32 @@ +package me.riddhimanadib.fastformbuilder.model; + +public class Student { + private String uuid; + private String name; + + public Student(String uuid, String name) { + this.uuid = uuid; + this.name = name; + } + + public String getUuid() { + return uuid; + } + + public void setUuid(String uuid) { + this.uuid = uuid; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + @Override + public String toString(){ + return name; + } +} From ae63c68714c001e5c727d783cf91290d7a9da458 Mon Sep 17 00:00:00 2001 From: Victor kakama Date: Fri, 26 Oct 2018 13:56:09 +0300 Subject: [PATCH 4/7] add more ignore files --- .gitignore | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.gitignore b/.gitignore index 718becd..5f53158 100644 --- a/.gitignore +++ b/.gitignore @@ -34,9 +34,14 @@ captures/ # Intellij *.iml + +.idea/ .idea/workspace.xml .idea/tasks.xml .idea/libraries +.classpath +*.ipr +*.iws # Keystore files *.jks From 48cf6e9eedf4369c1856f05f5e5c51ce6fbf6496 Mon Sep 17 00:00:00 2001 From: Victor kakama Date: Fri, 26 Oct 2018 14:18:41 +0300 Subject: [PATCH 5/7] use students options to test objects in a dingle select --- .../fastformbuilder/FormListenerActivity.java | 7 +++++-- .../riddhimanadib/fastformbuilder/model/Student.java | 12 ++++++++++++ 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/me/riddhimanadib/fastformbuilder/FormListenerActivity.java b/app/src/main/java/me/riddhimanadib/fastformbuilder/FormListenerActivity.java index 6432b68..6500d23 100644 --- a/app/src/main/java/me/riddhimanadib/fastformbuilder/FormListenerActivity.java +++ b/app/src/main/java/me/riddhimanadib/fastformbuilder/FormListenerActivity.java @@ -6,6 +6,7 @@ import android.support.v7.widget.RecyclerView; import android.view.MenuItem; import android.widget.Toast; +import me.riddhimanadib.fastformbuilder.model.Student; import me.riddhimanadib.formmaster.FormBuilder; import me.riddhimanadib.formmaster.listener.OnFormElementValueChangedListener; import me.riddhimanadib.formmaster.model.*; @@ -17,6 +18,7 @@ public class FormListenerActivity extends AppCompatActivity implements OnFormEle private RecyclerView mRecyclerView; private FormBuilder mFormBuilder; + List students = Student.generateSampleStudents(); @Override protected void onCreate(Bundle savedInstanceState) { @@ -78,7 +80,7 @@ private void setupForm() { FormElementPickerSingle element41 = FormElementPickerSingle.createInstance() .setTitle("Single Item") - .setOptions(fruits) + .setOptions(students) .setPickerTitle("Pick any item"); FormElementPickerMulti element42 = FormElementPickerMulti.createInstance() .setTitle("Multi Items") @@ -112,7 +114,8 @@ private void setupForm() { @Override public void onValueChanged(BaseFormElement formElement) { if (formElement instanceof FormElementPickerSingle) { - Toast.makeText(this, formElement.getValue() + " " + ((FormElementPickerSingle) formElement).getSelectedIndex(), Toast.LENGTH_SHORT).show(); + int selectedIndex = ((FormElementPickerSingle) formElement).getSelectedIndex(); + Toast.makeText(this, formElement.getValue() + ": " + students.get(selectedIndex).getUuid(), Toast.LENGTH_SHORT).show(); } else { Toast.makeText(this, formElement.getValue(), Toast.LENGTH_SHORT).show(); } diff --git a/app/src/main/java/me/riddhimanadib/fastformbuilder/model/Student.java b/app/src/main/java/me/riddhimanadib/fastformbuilder/model/Student.java index ba9985c..3da1893 100644 --- a/app/src/main/java/me/riddhimanadib/fastformbuilder/model/Student.java +++ b/app/src/main/java/me/riddhimanadib/fastformbuilder/model/Student.java @@ -1,5 +1,8 @@ package me.riddhimanadib.fastformbuilder.model; +import java.util.ArrayList; +import java.util.List; + public class Student { private String uuid; private String name; @@ -25,6 +28,15 @@ public void setName(String name) { this.name = name; } + public static List generateSampleStudents(){ + List students = new ArrayList<>(); + students.add(new Student("abc","Kakama Victor")); + students.add(new Student("cde","Favor Atuheire")); + students.add(new Student("fgh","Ariella Atwiine")); + students.add(new Student("ijk","Onyx Kakama")); + return students; + } + @Override public String toString(){ return name; From e387427f1da3d044dbd71dc9164a149cde906f75 Mon Sep 17 00:00:00 2001 From: Victor kakama Date: Fri, 26 Oct 2018 14:19:08 +0300 Subject: [PATCH 6/7] use a generic list since selections can also be objects not only strings --- .../model/FormElementPickerSingle.java | 16 ++++++++-------- .../FormElementPickerSingleViewHolder.java | 2 +- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/form-master/src/main/java/me/riddhimanadib/formmaster/model/FormElementPickerSingle.java b/form-master/src/main/java/me/riddhimanadib/formmaster/model/FormElementPickerSingle.java index 698412d..f377715 100644 --- a/form-master/src/main/java/me/riddhimanadib/formmaster/model/FormElementPickerSingle.java +++ b/form-master/src/main/java/me/riddhimanadib/formmaster/model/FormElementPickerSingle.java @@ -10,8 +10,8 @@ public class FormElementPickerSingle extends BaseFormElement { private String pickerTitle; // custom title for picker - private List mOptions; // list of options for single and multi picker - private List mOptionsSelected; // list of selected options for single and multi picker + private List mOptions; // list of options for single and multi picker + private List mOptionsSelected; // list of selected options for single and multi picker private int selectedIndex; public FormElementPickerSingle() { @@ -49,12 +49,12 @@ public FormElementPickerSingle setRequired(boolean required) { } // custom setters - public FormElementPickerSingle setOptions(List mOptions) { + public FormElementPickerSingle setOptions(List mOptions) { this.mOptions = mOptions; return this; } - public FormElementPickerSingle setOptionsSelected(List mOptionsSelected) { + public FormElementPickerSingle setOptionsSelected(List mOptionsSelected) { this.mOptionsSelected = mOptionsSelected; return this; } @@ -65,12 +65,12 @@ public FormElementPickerSingle setPickerTitle(String title) { } // custom getters - public List getOptions() { - return (this.mOptions == null) ? new ArrayList() : this.mOptions; + public List getOptions() { + return (this.mOptions == null) ? new ArrayList<>() : this.mOptions; } - public List getOptionsSelected() { - return (this.mOptionsSelected == null) ? new ArrayList() : this.mOptionsSelected; + public List getOptionsSelected() { + return (this.mOptionsSelected == null) ? new ArrayList<>() : this.mOptionsSelected; } public String getPickerTitle() { diff --git a/form-master/src/main/java/me/riddhimanadib/formmaster/viewholder/FormElementPickerSingleViewHolder.java b/form-master/src/main/java/me/riddhimanadib/formmaster/viewholder/FormElementPickerSingleViewHolder.java index f089226..4a0da1c 100644 --- a/form-master/src/main/java/me/riddhimanadib/formmaster/viewholder/FormElementPickerSingleViewHolder.java +++ b/form-master/src/main/java/me/riddhimanadib/formmaster/viewholder/FormElementPickerSingleViewHolder.java @@ -46,7 +46,7 @@ public void bind(final int position, BaseFormElement formElement, final Context // reformat the options in format needed final CharSequence[] options = new CharSequence[mFormElementPickerSingle.getOptions().size()]; for (int i = 0; i < mFormElementPickerSingle.getOptions().size(); i++) { - options[i] = mFormElementPickerSingle.getOptions().get(i); + options[i] = mFormElementPickerSingle.getOptions().get(i).toString(); } final AlertDialog dialog = new AlertDialog.Builder(context) From 5267382ec9b9aa4d95b72a519fac6cb58180ea5e Mon Sep 17 00:00:00 2001 From: Victor kakama Date: Fri, 26 Oct 2018 14:19:23 +0300 Subject: [PATCH 7/7] update libraries to latest --- app/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 6999d34..a3c3bc6 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -23,6 +23,6 @@ android { dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile project(path: ':form-master') - compile 'com.android.support:design:25.3.1' - compile 'com.android.support.constraint:constraint-layout:1.0.0' + compile 'com.android.support:design:25.4.0' + compile 'com.android.support.constraint:constraint-layout:1.1.3' } \ No newline at end of file