Skip to content

gzeinnumer/AndroidDropdown

Repository files navigation

AndroidDropdown - Easy AutoTextView


Simple way to use AutoTextView


Content List


Download

Add maven jitpack.io and dependencies in build.gradle (Project) :

// build.gradle project
allprojects {
  repositories {
    ...
    maven { url 'https://jitpack.io' }
  }
}

// build.gradle app/module
dependencies {
  ...
  implementation 'com.github.gzeinnumer:AndroidDropdown:version'
  implementation 'com.google.android.material:material:1.3.0'
}

Feature List


Usage

AutoTextView

  • Widget on xml
<com.google.android.material.textfield.TextInputLayout
    style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox.ExposedDropdownMenu"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:hint="Hint AutoCompleteTextView">

    <AutoCompleteTextView
        android:id="@+id/act"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:editable="false"
        android:inputType="none" />
</com.google.android.material.textfield.TextInputLayout>

if you want to custom your AutoCompleteTextView use style="@style/AutoCompleteTextViewStyle" on view, and make style on your res->value->style.xml

<resources xmlns:tools="http://schemas.android.com/tools">

    <style name="AutoCompleteTextViewStyle">
        <item name="android:textSize">36sp</item>
        <item name="android:textColor">#000000</item>
    </style>
</resources>
adapter.setItemStyle(R.style.AutoCompleteTextViewStyle);

  • Content Item there is 2 type list that you can sent to this AutoCompleteTextView.

Type 1

AutoCompleteTextView act = findViewById(R.id.act);

ArrayList<String> list = new ArrayList<String>();
list.add("Satu");
list.add("Dua");
list.add("Tiga");
list.add("Empat");

AdapterAutoCompleteText<String> adapter = new AdapterAutoCompleteText<String>(getApplicationContext(), list);
//adapter.setItemStyle(R.style.AutoCompleteTextViewStyle);
act.setAdapter(adapter);
act.setFreezesText(false);

act.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
            act.setText(list.get(position), false);
        } else {
            act.setText(list.get(position));
        }
    }
});

Type 2 for this type you should override function toString() in your model pojo

public class ExampleModel {

    private int id;
    private String name;
    private String address;

    //constructor

    //getter
    //setter

    @Override
    public String toString() {
        return "ExampleModel{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", address='" + address + '\'' +
                '}';
    }
}

Use your own model. And dont forget to declare your model pojo in Declaration. Example AdapterAutoCompleteText<ExampleModel>(getApplicationContext(), listObject);

AutoCompleteTextView act = findViewById(R.id.act);

ArrayList<ExampleModel> listObject = new ArrayList<>();
listObject.add(new ExampleModel(1, "Zein", "Balbar"));
listObject.add(new ExampleModel(2, "Zein2", "Balbar2"));
listObject.add(new ExampleModel(3, "Zein3", "Balbar3"));
listObject.add(new ExampleModel(4, "Zein4", "Balbar4"));

AdapterAutoCompleteText<ExampleModel> adapter = new AdapterAutoCompleteText<ExampleModel>(getApplicationContext(), listObject);
//adapter.setItemStyle(R.style.AutoCompleteTextViewStyle);
act.setAdapter(adapter);
act.setFreezesText(false);

act.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
            act.setText(list.get(position), false);
        } else {
            act.setText(list.get(position));
        }
    }
});

Preview :


Example Code/App

FullCode MainActivity & ExampleModel & XML

Sample Code And App


Version

  • 1.0.0
    • First Release
  • 1.0.3
    • Bug Fixed
  • 1.0.4
    • Bug Fixed
  • 2.0.0
    • Support SDK 16

Contribution

You can sent your constibution to branch open-pull.


Copyright 2020 M. Fadli Zein

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages