An address-autocompleting text field for Android

Overview

android-PlacesAutocompleteTextView

Build Status Android Arsenal

An AutocompleteTextView that interacts with the Google Maps Places API to provide location results and caches selected results in a history file for later use

gif

Installing

The PlacesAutocompleteTextView is available from the sonatype snapshots repository. Use the following in your build.gradle:

repositories {
    maven { url 'https://oss.sonatype.org/content/repositories/snapshots' }
}

dependencies {
    compile 'com.seatgeek:placesautocomplete:0.3-SNAPSHOT'
}

Basic setup and usage

  1. You'll need a Google Server API key for you application. There are instructions on how to set up your API project and generate a key here

  2. Your application will need the android.permission.INTERNET permission in its manifest for the View to interact with the Google Maps API

  3. With your API key, you're ready to add the PlacesAutocompleteTextView to your layout xml:

    <com.seatgeek.placesautocomplete.PlacesAutocompleteTextView
       android:id="@+id/places_autocomplete"
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       app:pacv_googleMapsApiKey="<YOUR_GOOGLE_API_KEY>"/>
  4. Finally, you'll likely want a listener in your UI to know when the user has selected an item from the dropdown:

    placesAutocomplete.setOnPlaceSelectedListener(
           new OnPlaceSelectedListener() {
               @Override
               public void onPlaceSelected(final Place place) {
                  // do something awesome with the selected place
               }
           }
    );
  5. That's it!

Note: you can treat the PlacesAutocompleteTextView the same as any AutocompleteTextView as it extends from the framework AutocompleteTextView. This means you can use custom styles with all the standard view properties.

Advanced usage/customization

XML properties

There are a few XML properties that can control some of the functionality of the autocomplete view:

xml property java method description
pacv_historyFile setHistoryManager() By default, the PlacesAutocompleteTextView will save the history of the selected Place's in a file on the file system. This is great for cases when your user may be typing in the same address in different parts of your UI or across different sessions. If you'd like to simply change the location of the file on the filesystem, you can specify the path string here. By default, the file is stored in the application cache dir under autocomplete/pacv_history.json. If this is a feature that you'd like to disable, you can set the property in xml to @null or call setHistoryManager(null).
pacv_resultType setResultType() The Places API can return various types of Places depending on what your application is looking to allow the user to select. By default, the PlacesAutocompleteTextView only requests items of type address, which returns locations associated with a full postal address, public or residential. You can change this to also be geocode for any address or establishment for non-residential addresses
pacv_adapterClass setAdapter() If you don't like the default Adapter for displaying the items in the dropdown list (it is pretty basic by default), you can override it by specifying your own in xml (by passing the fully-qualified classname) or using setAdapter(). An important note: because of how the filtering functionality works in the PlacesAutocompleteTextView, your custom adapter must extend AbstractPlacesAutocompleteAdapter.
pacv_clearEnabled showClearButton() Show the typicall X button to the right of the PlacesAutocompleteTextView to let user clear the text. Defaults to false. Other methods for controlling the clear button is setImgClearButton() Override the default Clear image and add your own, setOnClearListener() Override the clear listener like what should happen when the X is pressed, default is clear text, showClearButton() show/hide it.

Need more details? PlaceDetails

One of the requirements of our usage of this view was autofilling the payment and shipping addresses in our checkout flow. By default, the returned Place from the Google Maps API doesn't have the full set of address components (city, state, postal, street address, etc.) and instead provides it "conveniently" in a human readable string like "235 Park Ave South, New York, NY 10003". Which is probably pretty tricky to parse to get the address components. Enter the "Place Details" API. The PlacesAutocompleteTextView provides a helper method getDetailsFor(Place, DetailsCallback) that you can use to easily fetch the extra details that you might need. The PlaceDetails object has a lot more than just address components as well, so if you're building a complex UI around a location, this is probably the API call that you'll need to make.

If you have concerns about configuration changes while the details request is in-flight, you can grab the instance of the PlacesApi from PlacesAutoCompleteTextView#getApi() and manage the details request yourself.

See the example project for this API in use.

Getting stylish

The PlacesAutocompleteTextView is styleable using the pacv_placesAutoCompleteTextViewStyle global style attribute. The style should extend from PACV.Widget.PlacesAutoCompleteTextView to get the default style's parameters, e.g.:

styles.xml:

        <style name="Widget.PlacesAutoCompleteTextView.Styled"
               parent="PACV.Widget.PlacesAutoCompleteTextView">
            <item name="android:background">@drawable/my_edit_text_background</item>
            <item name="android:textAppearance">@style/MyTextAppearance</item>
        </style>

themes.xml:

        <style name="AppTheme" parent="@style/YourParentStyle">
            <item name="pacv_placesAutoCompleteTextViewStyle">@style/Widget.PlacesAutoCompleteTextView.Styled</item>
        </style>

Location biasing

A common thing that you might want to do is bias the place results to the location of the user. By default, the PlacesAutocompleteTextView will bias the results by a geoip lookup of the device's IP address. If your app has different requirements for where you want to bias the address results to or you want more accuracy than a geoip lookup, you can pass an Android Location into the PlacesAutocompleteTextView using the #setCurrentLocation() method.

You can tweak the biasing radius by using the setRadiusMeters(Long) method.

If you'd like to disable biasing completely, you can setLocationBiasEnabled(false)

Purpose and "why not use Google Play Services?"

This project was started internally before the Places API was released on Google Play Services and we needed a way to make entering your payment and shipping addresses in our Android app easier. The reason that this project is still alive and hasn't migrated to Google Play Services is twofold:

  1. It's still impossible to fetch the full PlaceDetails from the Google Play Services implementation [ref], without which you cannot get the full breakdown of address components
  2. It handles hooking the UI components to the data for you to accelerate your development process. With Google Play Services you still need to create your own FilterAdapter, AutocompleteTextView, etc.

Contributing

  1. Fork this repo and clone your fork
  2. Make your desired changes
  3. Add tests for your new feature and ensure all tests are passing
  4. Commit and push
  5. Submit a Pull Request through Github's interface and a project maintainer will decide your change's fate.

Note: issues can be submitted via github issues

License

PlacesAutocompleteTextView is released under a BSD 2-Clause License, viewable here

Comments
  • Adapter View

    Adapter View

    Dude, I love your work man. I was using the AutoCompleteTextView, created custom adapter ext,. and working all these days.

    I started using yours and love it, the only problem is my earlier AutoCompleteTextView was showing many suggestions (like 8-10) as soon as i begin typing a place name. But yours shows only 2 ... Kindly help.

    opened by abaxxx 12
  • Failed to resolve: com.seatgeek:placesautocomplete:0.3-SNAPSHOT

    Failed to resolve: com.seatgeek:placesautocomplete:0.3-SNAPSHOT

    Failed to resolve: com.seatgeek:placesautocomplete:0.3-SNAPSHOT Show in File Show in Project Structure dialog

    i am getting this issue when i compile this

    opened by arunkush 7
  • search for an address or a business?

    search for an address or a business?

    Is it possible to request a list of matching address and businesses? I've tried all pacv_resultType combos, and it seems I'm limited to either businesses or addresses.

    opened by qtmspin 7
  • Support language different than english in PlaceDetails

    Support language different than english in PlaceDetails

    Hi,

    getDetailsFor() method alway returning PlaceDetails in english because language parameter is not set in URL generated by PlacesApi.details() method. This is an issue for non-english users.

    I think best way is take to take system language as a base.

    opened by re3lex 7
  •  Google Server API key

    Google Server API key

    Hello in using a Server key the production app throws this exception: This IP, site or mobile application is not authorized to use this API key. Request received from IP address How can I solve this?

    opened by lexrrx 5
  • 	InputMethodManager leaks the last focused view

    InputMethodManager leaks the last focused view

    I see this error using PlacesAutocompleteTextView. https://gist.github.com/pyricau/4df64341cc978a7de414) Not sure if this is related to PlacesAutocompleteTextView!?

    https://code.google.com/p/android/issues/detail?id=171190

    Here´s a screenshot from leakcanary: screenshot_2017-02-24-18-37-37

    opened by erikswed 5
  • I try to find a way to insert a `Fragment` `Context` into the adapter

    I try to find a way to insert a `Fragment` `Context` into the adapter

    Thanks all for the PlacesAutocompleteTextView it´s really helpful I try to find a way to insert a Fragment Context into the adapter but ended up creating the setContext(..method as you can see down below. Any ide how to do this in a better way? in Fragment..

            mAutocomplete = (PlacesAutocompleteTextView) v.findViewById(R.id.autocomplete);
            mAutocomplete.setOnPlaceSelectedListener(this);
            ((TestPlacesAutocompleteAdapter)mAutocomplete.getAutocompleteAdapter()).setContext(this);
    

    in AbstractPlacesAutocompleteAdapter

    public class TestPlacesAutocompleteAdapter extends AddressFilterAdapter {
        public TestPlacesAutocompleteAdapter(final Context context, final PlacesApi api, final AutocompleteResultType resultType, final AutocompleteHistoryManager history) {
            super(context, api, resultType, history);
        }
        @Override
        protected View newView(final ViewGroup parent) {
            return LayoutInflater.from(parent.getContext()).inflate(R.layout.places_autocomplete_item, parent, false);
        }
    
        @Override
        protected void bindView(final View view, final Place item) {
            ((TextView) view).setText(item.description);
        }
    }
    
    
    public abstract class AddressFilterAdapter extends AbstractPlacesAutocompleteAdapter implements
           , Runnable {
        public AddressFilterAdapter(final Context context,
                                    final PlacesApi api,
                                    final AutocompleteResultType resultType,
                                    final AutocompleteHistoryManager history) {
            super(context, api, resultType, history);
            mRefreshLock = new Object();
            mHandler = new Handler();
            mRefreshRequested = false;
            mRefreshInProgess = false;
            mNextRefresh = new Date();
        }
        public void setContext(HomeFragment context){
    
            this.mWeakReference = new WeakReference<HomeFragment>(context);
        }
        @Override
        public void run() {
            onChange();
        }
    }
    
    opened by erikswed 5
  • Problem with a custom adapter

    Problem with a custom adapter

    Hi everyone! First, awesome library. I realy like it. I try create a custom a adapter and passing it to my xml, however i get a error occurs at run activity. How to fix this bug? Thanks

    Here is my xml

    com.seatgeek.placesautocomplete.PlacesAutocompleteTextView
                                android:id="@+id/places_autocomplete"
                                android:layout_width="match_parent"
                                android:layout_height="wrap_content"
                                app:pacv_googleMapsApiKey="@string/API_server_key"
                            app:pacv_adapterClass="adapter.TestPlacesAutocompleteAdapter"
    

    Here is log

    Caused by: android.view.InflateException: Unable to find valid constructor with params Context, PlacesApi, AutocompleteResultType, and DefaultAutocompleteHistoryManager for specified adapterClass: com.teusoft.sirved.adapter.TestPlacesAutocompleteAdapter
                                               at com.seatgeek.placesautocomplete.PlacesAutocompleteTextView.adapterForClass(PlacesAutocompleteTextView.java:225)
                                               at com.seatgeek.placesautocomplete.PlacesAutocompleteTextView.init(PlacesAutocompleteTextView.java:127)
                                               at com.seatgeek.placesautocomplete.PlacesAutocompleteTextView.(PlacesAutocompleteTextView.java:78)
                                               at java.lang.reflect.Constructor.newInstance(Native Method) 
                                               at java.lang.reflect.Constructor.newInstance(Constructor.java:288) 
    
    opened by tuanth89 5
  • No Lat/Lng for some addresses

    No Lat/Lng for some addresses

    I've added PlacesAutocompleteTextView to an app. It appears to be working corrrectly except certain addresses don't geocode the lat/lng. In a bid to check if it's the coding, I checked another app and the same address returns lat/lng.

    I suspect that if a particular part of the address is not present, then it doesn't geocode??? For example, if the address doesn't have an 'suburb' of a 'city' then no geocode is present.

    Can anyone confirm this?

    opened by madcap66 4
  • dynamically change the pacv_historyFile name

    dynamically change the pacv_historyFile name

    Lets say there are many users and for each one I want to change the pacv_historyFile . I see the xml property the, pacv_historyFile but how to change that programmatically?

    opened by erikswed 4
  • NoSuchMethodException

    NoSuchMethodException

    Caused by: java.lang.NoSuchMethodException: [class android.content.Context, class com.seatgeek.placesautocomplete.PlacesApi, class com.seatgeek.placesautocomplete.model.AutocompleteResultType, interface com.seatgeek.placesautocomplete.history.AutocompleteHistoryManager] at java.lang.Class.getConstructorOrMethod(Class.java:423) at java.lang.Class.getConstructor(Class.java:397)

    opened by sarathnk 4
  • App crash when uploading my app to playstore

    App crash when uploading my app to playstore

    Hello everyone,

    I am using this script in my app and when I try to use it after uploading it to play services the app crash.

    When I enter the app and choosing the autocompletetextview and try to write something, its crash. In the debug version eveerything is working just fine and I don't know why.

    Crash report:

    java.lang.AssertionError: 
      at com.google.gson.Gson.fromJson (Gson.java)
      at com.google.gson.Gson.fromJson (Gson.java)
      at com.seatgeek.placesautocomplete.json.GsonPlacesApiJsonParser.autocompleteFromStream (GsonPlacesApiJsonParser.java:14)
      at com.seatgeek.placesautocomplete.network.AbstractPlacesHttpClient$1.handleStreamResult (AbstractPlacesHttpClient.java)
      at com.seatgeek.placesautocomplete.network.AbstractPlacesHttpClient$1.handleStreamResult (AbstractPlacesHttpClient.java)
      at com.seatgeek.placesautocomplete.model.Status.isSuccessful (Status.java:30)
      at com.seatgeek.placesautocomplete.network.HttpUrlConnectionMapsHttpClient.isErrorResponse (HttpUrlConnectionMapsHttpClient.java:30)
      at com.seatgeek.placesautocomplete.network.HttpUrlConnectionMapsHttpClient.executeNetworkRequest (HttpUrlConnectionMapsHttpClient.java:30)
      at com.seatgeek.placesautocomplete.network.AbstractPlacesHttpClient.executeAutocompleteRequest (AbstractPlacesHttpClient.java)
      at com.seatgeek.placesautocomplete.PlacesApi.autocomplete (PlacesApi.java)
      at com.seatgeek.placesautocomplete.adapter.PlacesApiFilter.performFiltering (PlacesApiFilter.java)
      at android.widget.Filter$RequestHandler.handleMessage (Filter.java:236)
      at android.os.Handler.dispatchMessage (Handler.java:107)
      at android.os.Looper.loop (Looper.java:214)
      at android.os.HandlerThread.run (HandlerThread.java:67)
    Caused by: java.lang.AssertionError: 
      at com.google.gson.internal.bind.TypeAdapters$EnumTypeAdapter.<init> (TypeAdapters.java:87)
      at com.google.gson.internal.bind.TypeAdapters$30.create (TypeAdapters.java)
      at com.google.gson.Gson.getAdapter (Gson.java:68)
      or                     .setDelegate (Gson.java:68)
      at com.google.gson.internal.bind.CollectionTypeAdapterFactory.create (CollectionTypeAdapterFactory.java)
      at com.google.gson.Gson.getAdapter (Gson.java:68)
      or                     .setDelegate (Gson.java:68)
      at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.createBoundField (ReflectiveTypeAdapterFactory.java)
      at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.getBoundFields (ReflectiveTypeAdapterFactory.java)
      at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.create (ReflectiveTypeAdapterFactory.java)
      at com.google.gson.Gson.getAdapter (Gson.java:68)
      or                     .setDelegate (Gson.java:68)
      at com.google.gson.internal.bind.CollectionTypeAdapterFactory.create (CollectionTypeAdapterFactory.java)
      at com.google.gson.Gson.getAdapter (Gson.java:68)
      or                     .setDelegate (Gson.java:68)
      at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.createBoundField (ReflectiveTypeAdapterFactory.java)
      at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.getBoundFields (ReflectiveTypeAdapterFactory.java)
      at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.create (ReflectiveTypeAdapterFactory.java)
      at com.google.gson.Gson.getAdapter (Gson.java:68)
      or                     .setDelegate (Gson.java:68)
      at com.google.gson.Gson.fromJson (Gson.java)
      at com.google.gson.Gson.fromJson (Gson.java)
      at com.seatgeek.placesautocomplete.json.GsonPlacesApiJsonParser.autocompleteFromStream (GsonPlacesApiJsonParser.java:14)
      at com.seatgeek.placesautocomplete.network.AbstractPlacesHttpClient$1.handleStreamResult (AbstractPlacesHttpClient.java)
      at com.seatgeek.placesautocomplete.network.AbstractPlacesHttpClient$1.handleStreamResult (AbstractPlacesHttpClient.java)
      at com.seatgeek.placesautocomplete.model.Status.isSuccessful (Status.java:30)
      at com.seatgeek.placesautocomplete.network.HttpUrlConnectionMapsHttpClient.isErrorResponse (HttpUrlConnectionMapsHttpClient.java:30)
      at com.seatgeek.placesautocomplete.network.HttpUrlConnectionMapsHttpClient.executeNetworkRequest (HttpUrlConnectionMapsHttpClient.java:30)
      at com.seatgeek.placesautocomplete.network.AbstractPlacesHttpClient.executeAutocompleteRequest (AbstractPlacesHttpClient.java)
      at com.seatgeek.placesautocomplete.PlacesApi.autocomplete (PlacesApi.java)
      at com.seatgeek.placesautocomplete.adapter.PlacesApiFilter.performFiltering (PlacesApiFilter.java)
      at android.widget.Filter$RequestHandler.handleMessage (Filter.java:236)
      at android.os.Handler.dispatchMessage (Handler.java:107)
      at android.os.Looper.loop (Looper.java:214)
      at android.os.HandlerThread.run (HandlerThread.java:67)
    Caused by: java.lang.NoSuchFieldException: 
      at java.lang.Class.getField (Class.java:1604)
      at com.google.gson.internal.bind.TypeAdapters$EnumTypeAdapter.<init> (TypeAdapters.java:34)
      at com.google.gson.internal.bind.TypeAdapters$30.create (TypeAdapters.java)
      at com.google.gson.Gson.getAdapter (Gson.java:68)
      or                     .setDelegate (Gson.java:68)
      at com.google.gson.internal.bind.CollectionTypeAdapterFactory.create (CollectionTypeAdapterFactory.java)
      at com.google.gson.Gson.getAdapter (Gson.java:68)
      or                     .setDelegate (Gson.java:68)
      at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.createBoundField (ReflectiveTypeAdapterFactory.java)
      at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.getBoundFields (ReflectiveTypeAdapterFactory.java)
      at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.create (ReflectiveTypeAdapterFactory.java)
      at com.google.gson.Gson.getAdapter (Gson.java:68)
      or                     .setDelegate (Gson.java:68)
      at com.google.gson.internal.bind.CollectionTypeAdapterFactory.create (CollectionTypeAdapterFactory.java)
      at com.google.gson.Gson.getAdapter (Gson.java:68)
      or                     .setDelegate (Gson.java:68)
      at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.createBoundField (ReflectiveTypeAdapterFactory.java)
      at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.getBoundFields (ReflectiveTypeAdapterFactory.java)
      at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.create (ReflectiveTypeAdapterFactory.java)
      at com.google.gson.Gson.getAdapter (Gson.java:68)
      or                     .setDelegate (Gson.java:68)
      at com.google.gson.Gson.fromJson (Gson.java)
      at com.google.gson.Gson.fromJson (Gson.java)
      at com.seatgeek.placesautocomplete.json.GsonPlacesApiJsonParser.autocompleteFromStream (GsonPlacesApiJsonParser.java:14)
      at com.seatgeek.placesautocomplete.network.AbstractPlacesHttpClient$1.handleStreamResult (AbstractPlacesHttpClient.java)
      at com.seatgeek.placesautocomplete.network.AbstractPlacesHttpClient$1.handleStreamResult (AbstractPlacesHttpClient.java)
      at com.seatgeek.placesautocomplete.model.Status.isSuccessful (Status.java:30)
      at com.seatgeek.placesautocomplete.network.HttpUrlConnectionMapsHttpClient.isErrorResponse (HttpUrlConnectionMapsHttpClient.java:30)
      at com.seatgeek.placesautocomplete.network.HttpUrlConnectionMapsHttpClient.executeNetworkRequest (HttpUrlConnectionMapsHttpClient.java:30)
      at com.seatgeek.placesautocomplete.network.AbstractPlacesHttpClient.executeAutocompleteRequest (AbstractPlacesHttpClient.java)
      at com.seatgeek.placesautocomplete.PlacesApi.autocomplete (PlacesApi.java)
      at com.seatgeek.placesautocomplete.adapter.PlacesApiFilter.performFiltering (PlacesApiFilter.java)
      at android.widget.Filter$RequestHandler.handleMessage (Filter.java:236)
      at android.os.Handler.dispatchMessage (Handler.java:107)
      at android.os.Looper.loop (Looper.java:214)
      at android.os.HandlerThread.run (HandlerThread.java:67)
    
    opened by dorperez 2
  • java.lang.ArrayIndexOutOfBoundsException

    java.lang.ArrayIndexOutOfBoundsException

    LGE LG K4 (lv1), 1024MB RAM, Android 6.0 Report 1 of 2 java.lang.ArrayIndexOutOfBoundsException: at java.util.ArrayList.get (ArrayList.java:310) at android.widget.ArrayAdapter.getItem (ArrayAdapter.java:344) at com.seatgeek.placesautocomplete.PlacesAutocompleteTextView$2.onItemClick (PlacesAutocompleteTextView.java:162) at android.widget.AutoCompleteTextView.performCompletion (AutoCompleteTextView.java:906) at android.widget.AutoCompleteTextView.access$500 (AutoCompleteTextView.java:91) at android.widget.AutoCompleteTextView$DropDownItemClickListener.onItemClick (AutoCompleteTextView.java:1202) at android.widget.ListPopupWindow.performItemClick (ListPopupWindow.java:797) at android.widget.AutoCompleteTextView.onCommitCompletion (AutoCompleteTextView.java:877) at com.android.internal.widget.EditableInputConnection.commitCompletion (EditableInputConnection.java:119) at com.android.internal.view.IInputConnectionWrapper.executeMessage (IInputConnectionWrapper.java:322) at com.android.internal.view.IInputConnectionWrapper$MyHandler.handleMessage (IInputConnectionWrapper.java:78) at android.os.Handler.dispatchMessage (Handler.java:102) at android.os.Looper.loop (Looper.java:148) at android.app.ActivityThread.main (ActivityThread.java:5585) at java.lang.reflect.Method.invoke (Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java:730) at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:620)

    bug help wanted 
    opened by Hanzala717 0
  • Add scroll in results

    Add scroll in results

    Hello, when searching location there are only two or three results are showing,remaining are kept under keyboard. If possible, please add scroll in search results in next release.It will more useful Thanks

    enhancement help wanted 
    opened by bewithdhanu 2
  • Information missing

    Information missing

    setCurrentLocation() not give current location until set the radius by calling setRadiusMeters(). There is not mention in the document that user have to first set call the setRadiusMeters(radius) method for getting the current locations places.

    bug help wanted 
    opened by zeeshanali0156 0
  • Proguard rule needed

    Proguard rule needed

    I´m building a release build but cannot get past his proguard related error:

    Process: com.toy.android.production, PID: 13817
    java.lang.NullPointerException: Attempt to read from field 'java.lang.Object android.widget.Filter$FilterResults.values' on a null object reference
       at com.seatgeek.placesautocomplete.adapter.PlacesApiFilter.publishResults(SourceFile:120)
       at android.widget.Filter$ResultsHandler.handleMessage(Filter.java:282)
       at android.os.Handler.dispatchMessage(Handler.java:102)
       at android.os.Looper.loop(Looper.java:158)
       at android.app.ActivityThread.main(ActivityThread.java:7225)
       at java.lang.reflect.Method.invoke(Native Method)
       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)
    

    In my proguard-rules.pro file I have the:

    -keep class com.seatgeek{ *; } -keep public class com.toy.android.ui.adapter.PlacesAutocompleteAdapter{ *; }

    What am I missing please advice

    enhancement help wanted 
    opened by erikswed 6
Owner
SeatGeek
SeatGeek
A module designed to encapsulate the use of an Android EditText field for gathering currency information from a user. Supports all ISO-3166 compliant locales/currencies.

CurrencyEditText CurrencyEditText is an extension of Android's EditText view object. It is a module designed to provide ease-of-use when using an Edit

Josh Kitchens 335 Dec 25, 2022
A editable text with a constant text/placeholder for Android.

ParkedTextView A EditText with a constant text in the end. How to use <com.goka.parkedtextview.ParkedTextView xmlns:app="http://schemas.android.co

goka 270 Nov 11, 2022
RTL marquee text view android right to left moving text - persian - farsi - arabic - urdo

RTL marquee text view android right to left moving text - persian - farsi - arabic - urdo

mehran elyasi 4 Feb 14, 2022
RichEditor for Android is a beautiful Rich Text WYSIWYG Editor for Android.

RichEditor for Android is a beautiful Rich Text WYSIWYG Editor for Android. Looking for iOS? Check out cjwirth/RichEditorView Supported Functions Bold

Daichi Furiya 6k Jan 2, 2023
MarkdownView is an Android webview with the capablity of loading Markdown text or file and display it as HTML, it uses MarkdownJ and extends Android webview.

MarkdownView is an Android webview with the capablity of loading Markdown text or file and display it as HTML, it uses MarkdownJ and extends Android webview.

Feras Alnatsheh 1k Dec 20, 2022
:page_facing_up: Android Text Full Jusiftication / Wrapping / Justify / Hyphenate - V2.0

LIBRARY IS NO LONGER MAINTAINED If you want to adopt + maintain this library, please drop me a message - [email protected] Android Full Justific

Mathew Kurian 1.9k Dec 29, 2022
Android form edit text is an extension of EditText that brings data validation facilities to the edittext.

Android Form EditText Android form edit text is an extension of EditText that brings data validation facilities to the edittext. Example App I built a

Andrea 1.5k Dec 14, 2022
[DISCONTINUED] Rrich text editor for android platform. 安卓富文本编辑器,暂停维护

icarus-android Maybe the best rich text editor on android platform. Base on Simditor Features Alignment (left/center/right) Bold Blockquote Code Horiz

Dyson Woo 739 Sep 5, 2022
Android library contain custom realisation of EditText component for masking and formatting input text

Masked-Edittext Masked-Edittext android library EditText widget wrapper add masking and formatting input text functionality. Install Maven <dependency

Evgeny Safronov 600 Nov 29, 2022
Chips EditText, Token EditText, Bubble EditText, Spannable EditText and etc.. There are many names of this control. Here I develop easy to understand , modify and integrate Chips Edit Text widget for Android

Chips EditText Library Chips EditText, Token EditText, Bubble EditText, Spannable EditText and etc.. There are many names of this control. Here I deve

kpbird 381 Nov 20, 2022
AutosizeEditText for Android is an extension of native EditText that offer a smooth auto scale text size.

AutoscaleEditText AutosizeEditText for Android is an extension of native EditText that offer a smooth auto scale text size. Latest Version How to use

Txus Ballesteros 354 Nov 28, 2022
Add text masking functionality to Android EditText. It will prevent user from inserting not allowed signs, and format input as well.

MaskFormatter MaskFormatter adds mask functionality to your EditText. It will prevent user from inserting not allowed signs, and format input as well.

Azimo Labs 161 Nov 25, 2022
Simple way to create linked text, such as @username or #hashtag, in Android TextView and EditText

Simple Linkable Text Simple way to create link text, such as @username or #hashtag, in Android TextView and EditText Installation Gradle Add dependenc

Aditya Pradana Sugiarto 76 Nov 29, 2022
Markdown Text for Android Jetpack Compose 📋.

Markdown Text for Android Jetpack Compose ??.

Jeziel Lago 250 Jan 4, 2023
Dealing with Android Text by simple way to get high performance.

Gapo Android RichText RichText supports Hashtag, Mention, Url, Phone Number, Email, Markdown, Custom Span, SeeMore/SeeLess by limited line or length,

GapoWork 8 Oct 20, 2021
Android Custom View for prevent the view behind on-screen keyboard when edit text is focused

Group Focusable Prevent the view behind on-screen keyboard when edit text is focused in Android UI Download Gradle implementation 'com.akexorcist:grou

Akexorcist 8 Jun 22, 2022
Dealing with Android Text by simple way to get high performance.

Gapo Android RichText RichText supports Hashtag, Mention, Url, Phone Number, Email, Markdown, Custom Span, SeeMore/SeeLess by limited line or length,

GapoWork 8 Oct 20, 2021
A simple Android library to protect part of text using Span

Text Protector A simple Android library to "protect" part of text using Span What is this? This is a small library for replacing part of a text in a T

Oleg Nestyuk 4 May 16, 2022
Light-weighted, convenient implementation of expandable text view that supports expanding & collapsing animations for Android projects

ExpandableTextView Light-weighted, convenient implementation of expandable text view that supports expanding & collapsing animations for Android proje

Giang H. Pham 22 Jan 6, 2023