2016-04-03 6 views
0

Ich möchte eine dynamische AutoCompleteTextView für Android entwickeln, die mit JSON Daten aus MySQL Datenbasis aufgefüllt werden. Im Grunde ist es keine schwierige Aufgabe, aber wo ich ein Problem habe? Ich bin inspiriert von der jQueryAutocomplete Option wo dynamisch Daten nach Eingabe Buchstaben abrufen. Aber Android AutoCompleteTextView ist mit allen JSON Daten bereits ausgefüllt.
Ich versuche, von Millionen von Daten abzufragen, die wirklich schwer zu speichern sind. Gibt es eine Möglichkeit, die Datenbank dynamisch nach der Eingabe zu durchsuchen?Was ist der beste Weg, JSON-Daten aus der Datenbank für Android AutoCompleteTextView abzurufen?

Z. B:

Wie wenn Benutzereingaben "a" dann wird es das beste Ergebnis für "a" abrufen. Wenn der Benutzer dann "ab" eingibt, wird er aktualisiert und mit neuen Ergebnissen aus der Datenbank gefüllt.

Dank

+0

Sie können den Basisschlüssel in eine JSON-Datei (Textdatei) herunterladen und danach suchen, wenn Sie die Daten nicht in einer lokalen SQLite-Datenbank speichern möchten. –

Antwort

1

Ich werde Sie nur nur einen allgemeinen Überblick geben für Ihre Aufgabe, die wie folgt aussieht,

public List<String> suggest; //List of suggestions 

autoComplete.addTextChangedListener(new TextWatcher(){ 

     public void afterTextChanged(Editable editable) { 
      // TODO Auto-generated method stub 

     } 

     public void beforeTextChanged(CharSequence s, int start, int count, int after) { 
      // TODO Auto-generated method stub 

     } 

     public void onTextChanged(CharSequence s, int start, int before, int count) { 
      String newText = s.toString(); 
      new getJson().execute(newText); 
     } 

    }); 

getJSON AsyncTask -> Für die neuen Werte vom Server abrufen

class getJson extends AsyncTask<String,String,String>{ 

    @Override 
    protected String doInBackground(String... key) { 
     String newText = key[0]; 
     newText = newText.trim(); 
     newText = newText.replace(" ", "+"); 
     try{ 
      //Codes to retrieve the data for suggestions 
      suggest = new ArrayList<String>(); 
      JSONArray jArray = new JSONArray(data); 
      for(loop the array){ 
      String SuggestKey = //retrieve values by iterating; 
      suggest.add(SuggestKey); 
      } 

     }catch(Exception e){ 
      Log.w("Error", e.getMessage()); 
     } 

     //Populate suggestions 

     runOnUiThread(new Runnable(){ 
      public void run(){ 
       aAdapter = new ArrayAdapter<String>(getApplicationContext(),R.layout.item,suggest); 
       autoComplete.setAdapter(aAdapter); 
       aAdapter.notifyDataSetChanged(); 
      } 
     }); 

     return null; 
    } 

Siehe here für die Detailinformationen.

Verwandte Themen