Skip to content

Simple fast form builder without xml. Available in Java and Kotlin

Notifications You must be signed in to change notification settings

c0deslinger/android-java-multiformbuilder

Repository files navigation

Multi Form Builder

Android Multi Form Builder is a simple library to help you make simple form faster without create xml codes.

alt text alt text alt text

Feature

  • Easily build forms with minimal effort
  • Clonable builder as template. So you can make more element with a single builder object.
  • More customable option such Text Font, Text Color, etc

Installation

In order to use the library, please follow this step bellow:

  • Add the following to your project level build.gradle:
allprojects {
  repositories {
    maven { url "https://jitpack.io" }
  }
}
  • Add this to your app build.gradle:
dependencies {
  implementation 'com.github.c0deslinger:android-java-multiformbuilder:1.0.3'
}

Example Usage

  • Init your form layout:

Java:

LinearLayout formLayout = (LinearLayout)findViewById(R.id.formLayout);

Kotlin:

//pfft
  • Make template view builder and set default value

Java:

MyEdittext.Builder edtBuilder = new MyEdittext.Builder(ExampleJavaActivity.this).setFormLayout(formLayout);

Kotlin:

val edtBuilder = MyEdittext.Builder(this@ExampleKotlinActivity).setFormLayout(formLayout)
  • Create EditText + Search Button

alt text

Java:

MyEdittext edtId = edtBuilder.clone().setTitle("ID").setMode(MyEdittext.Mode.SEARCH).create();
edtId.setOnClickSearchListener(keyword -> toast("Search: "+keyword));

Kotlin:

var edtId = edtBuilder.clone().setTitle("ID").setMode(MyEdittext.Mode.SEARCH).create()
edtId.setOnClickSearchListener { keyword ->  toast("Search: $keyword") }
  • Create EditText

alt text

Java:

MyEdittext edtName = edtBuilder.clone().setTitle("Name").create();

Kotlin:

var edtName = edtBuilder.clone().setTitle("Name").create()
  • Create EditText with 3 lines

alt text

Java:

MyEdittext edtAddress = edtBuilder.clone().setTitle("Address").setMinLines(3).create();

Kotlin:

var edtAddress = edtBuilder.clone().setTitle("Address").setMinLines(3).create()
  • Create EditText + datepicker

alt text

Java:

MyEdittext edtBirthdate = edtBuilder.clone().setInputType(InputType.TYPE_CLASS_DATETIME)
                .setTitle("Birthdate").setDateformat("dd-MM-yyyy")
                .setTitleColorResource(R.color.dark_grey)
                .create();

Kotlin:

var edtBirthdate = edtBuilder.clone().setInputType(InputType.TYPE_CLASS_DATETIME)
                .setTitle("Birthdate").setDateformat("dd-MM-yyyy")
                .setTitleColorResource(R.color.dark_grey)
                .create()
  • Create RadioButton

alt text

Java:

MyRadioButton rdbGender = new MyRadioButton.Builder(ExampleJavaActivity.this)
                .setTitle("Gender").setOptionList(new String[]{"Male", "Female"})
                .setFormLayout(formLayout).setSelected("Female").create();

Kotlin:

var rdbGender = MyRadioButton.Builder(this@ExampleKotlinActivity).setFormLayout(formLayout)
                .setTitle("Gender").setOptionList(arrayOf("Male", "Female")).setSelected("Female").create()

Note: If you not define template builder on the beginning, you have to setFormLayout to attach view.

  • Create multiple EditText in a single row

alt text

Java:

HashMap<String, MyEdittext> edtList = new LinkedHashMap<>();
MyEdittext.Builder edtItemBuilder = new MyEdittext.Builder(ExampleJavaActivity.this);
edtList.put("No", edtItemBuilder.clone().setTitle("No").setInputType(InputType.TYPE_CLASS_NUMBER).create());
edtList.put("Zip", edtItemBuilder.clone().setTitle("Zip").setInputType(InputType.TYPE_CLASS_NUMBER).create());
MyEdittextMultiple edtMultiple = new MyEdittextMultiple.Builder(ExampleJavaActivity.this, edtList)
            .setFormLayout(formLayout).setMargin(50).create();

Kotlin:

var edtList = LinkedHashMap<String, MyEdittext>()
var edtItemBuilder = MyEdittext.Builder(this@ExampleKotlinActivity)
edtList.put("No", edtItemBuilder.clone().setTitle("No").setInputType(InputType.TYPE_CLASS_NUMBER).create())
edtList.put("Zip", edtItemBuilder.clone().setTitle("No").setInputType(InputType.TYPE_CLASS_NUMBER).create())
var edtMultiple = MyEdittextMultiple.Builder(this@ExampleKotlinActivity, edtList)
        .setFormLayout(formLayout).setMargin(50).create()
  • Create spinner view

alt text

Java:

ArrayList<String> cityList = new ArrayList<>();
            cityList.add("Malang");
            cityList.add("Surabaya");
MySpinner spinCity = new MySpinner.Builder(ExampleJavaActivity.this)
        .setTitle("City").setItem(cityList).setDefaultSelected("Surabaya").setFormLayout(formLayout).create();

Kotlin:

val cityList = ArrayList<String>()
          cityList.add("Malang")
          cityList.add("Surabaya")
var spinCity = MySpinner.Builder(this@ExampleKotlinActivity)
        .setTitle("City").setItem(cityList).setDefaultSelected("Surabaya").setFormLayout(formLayout).create()
  • Create multiple checkbox

alt text

Java:

ArrayList<String> educationList = new ArrayList<>();
educationList.add("Associate");
educationList.add("Bachelor");
educationList.add("Master");
MyCheckbox myCheckboxView = new MyCheckbox.Builder(ExampleJavaActivity.this)
        .setTitle("Education").setCheckBoxItem(educationList)
        .setFormLayout(formLayout).setOnCheckedListener(selected -> toast("selected: "+selected)).create();

Kotlin

val educationList = ArrayList<String>()
educationList.add("Associate")
educationList.add("Bachelor")
educationList.add("Master")
val myCheckboxView = MyCheckbox.Builder(this@ExampleKotlinActivity)
        .setTitle("Education").setCheckBoxItem(educationList)
        .setFormLayout(formLayout).setOnCheckedListener{ selected -> toast("selected: $selected") }.create()
  • Create TextView

alt text

Java:

MyTextView myTextView = new MyTextView.Builder(ExampleJavaActivity.this)
                    .setTitle("Note:").setTitleFont("fonts/Roboto-Bold.ttf")
                    .setContent("Please check again before submit").setFormLayout(formLayout).create();

Kotlin:

var myTextView = MyTextView.Builder(this@ExampleKotlinActivity)
                .setTitle("Note:").setTitleFont("fonts/Roboto-Bold.ttf")
                .setContent("Please check again before submit").setFormLayout(formLayout).create()
  • Get values Java:
Button btnSubmit = (Button)findViewById(R.id.btnSubmit);
btnSubmit.setOnClickListener(view -> toast("Name: " + edtName.getValue()
                    + " Gender: " + rdbGender.getValue()
                    + " Address: " + edtAddress.getValue()
                    + " Birthdate: " + edtBirthdate.getValue()
                    + " No: " + edtMultiple.getValue("No")
                    + " Zip: " + edtMultiple.getValue("Zip")
                    + " City: " + spinCity.getValue()
                    + " Education: "+myCheckboxView.getAllChecked()));

Kotlin:

btnSubmit.setOnClickListener{ view -> toast("Name: " + edtName.getValue()
                + " Gender: " + rdbGender.getValue()
                + " Address: " + edtAddress.getValue()
                + " Birthdate: " + edtBirthdate.getValue()
                + " No: " + edtMultiple.getValue("No")
                + " Zip: " + edtMultiple.getValue("Zip")
                + " City: " + spinCity.getValue()
                + " Education: "+myCheckboxView.getAllChecked())}

Contributing

Send Pull Requests and Let's rock n roll

License

This Library is released under the Apache License, Version 2.0

About

Simple fast form builder without xml. Available in Java and Kotlin

Resources

Stars

Watchers

Forks

Packages

No packages published