2016-04-22 6 views
0

Ich versuche, die Autocompletetext-Ansicht in Android Studio zu verwenden, um Vorschläge für jeden vom Benutzer eingegebenen Schlüssel bereitzustellen.Wie Autocompletedtextview in Android Studio mit einem API-Aufruf implementieren?

Jedes Mal, wenn ein Brief verkeilt-in, wird ein API-Aufruf wie folgt gemacht,

http://dev.markitondemand.com/MODApis/Api/v2/Lookup/json?input=app 
http://dev.markitondemand.com/MODApis/Api/v2/Lookup/json?input=appl 
http://dev.markitondemand.com/MODApis/Api/v2/Lookup/json?input=apple 

Der JSON-Array, das von dem API-Aufruf wird bevölkert in der Vorschlagsliste-Box zurückgegeben.

Bisher habe ich die activity_main.xml Datei wie folgt,

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    tools:context="com.example.raam.stockmarketviewer.MainActivity"> 

    <AutoCompleteTextView 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:id="@+id/stocks" 
     android:hint="@string/hint" /> 
</RelativeLayout> 

Danach wie soll ich die Datei MainActivity.java strukturieren die Auto-Vorschläge zu erreichen setzen?

Vielen Dank im Voraus!

+0

nur folgen zu lösen [Dies] (http://stackoverflow.com/ a/19860624/2252830) Code-Snippet – pskink

+1

und wenn Sie keine Ahnung haben, wie Sie den JSON-Teil des Codes ändern können, den ich oben gepostet habe, ist [diese] (http://pastebin.com/VUm8P4mb) eine funktionierende Lösung für Ihren Fall, Kopieren Sie es einfach in Ihre 'Activity # onCreate' Methode – pskink

+0

@pskink Vielen Dank für die funktionierende Lösung. Es funktioniert super. Ich habe erst vor ein paar Tagen begonnen Android Development zu lernen und muss eine App in einer Woche für einen Schulabschluss fertigstellen. Entschuldigung, wenn ich dumme Fragen posten werde –

Antwort

0

einfach einen einfachen Adapter erstellen und aktualisieren, jedesmal wenn Sie Ergebnisse erhalten

List<String> suggestions = new ArrayList<>(); 
    ArrayAdapter<String> adapter ; 
    . 
    . 
    . 
    // in your onCreate 

    autocomplete = (AutoCompleteTextView)findViewById(R.id.stocks); 
    adapter = new ArrayAdapter<>(this, 
      android.R.layout.simple_dropdown_item_1line, suggestions); 
    autocomplete.setAdapter(arrayAdapter); 

    autocomplete.addTextChangedListener(new TextWatcher() { 
     @Override 
     public void beforeTextChanged(CharSequence s, int start, int count, int after) { 

     } 

     @Override 
     public void onTextChanged(CharSequence s, int start, int before, int count) { 
      //retrieveData(s); 
     } 

     @Override 
     public void afterTextChanged(Editable s) { 
      retrieveData(s); //this will call your method every time the user stops typing, if you want to call it for each letter, call it in onTextChanged 

     } 
    }); 
    . 
    . 
    . 
    // where you get the data, I suppose in a list 
    private void retrieveData(String s){ 
    //Do your stuff here with the String s and store the list of your results in the list suggestions 
    suggestions = yourList; 
    adapter.notifyDataSetChanged(); 

    } 
Verwandte Themen