Domanda

Ho creato un AutoCompleteTextView per la ricerca in un elenco di titoli del corso (ottenuto da un db SQLite) e quello che voglio fare è, quando l'utente fa clic su un titolo dal menu a discesa, tutta l'informazione da il database sulla sua scelta appare in una vista di testo creato al di sotto del AutoCompleteTextView.

Sono abbastanza nuovo per la programmazione, soprattutto per Android e vorrei davvero apprezzare se qualcuno mi potrebbe spiegare come esattamente per uso setOnItemClickListener chiamare un'istanza nel database nel TextView qui sotto.

Il codice per il layout (R.layout.main_courses) è

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content"
    android:padding="5dp">
<AutoCompleteTextView 
 android:id="@+id/autocomplete_course"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:hint="Search for a course"/>
<TextView
 android:id="@+id/text"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_below="@id/autocomplete_course"
    android:hint="Information about the course will appear here" />
</RelativeLayout>

e il codice per l'AutoCompleteTextView che ho scritto finora è:

protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.main_courses);
    DataBase db = new DataBase(this.getApplicationContext());
 db.openDataBase();
 ArrayList<String> aCourses = db.getCoursesArr();
 db.close();


 AutoCompleteTextView search = (AutoCompleteTextView) findViewById(R.id.autocomplete_course);
 ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.list_courses, aCourses);
 search.setAdapter(adapter);
}
È stato utile?

Soluzione

Prima di tutto si dovrebbe provare a utilizzare un CursorAdapter invece di ottenere una matrice da esso. Controllare questo link per maggiori informazioni.

C'è un metodo in AutoCompleteTextView che ti permettono di decidere quante lettere l'utente deve digitare prima che la discesa è mostrato, SetThreshold . Il problema è che permette solo valori> = 1.

Se si seleziona questa classe src codice , la notizia buona è che la variabile stabilita dai setThreshold() viene utilizzato solo in questo metodo:

public boolean enoughToFilter() {
  return getText().length() >= mThreshold;
}

Quindi, la prima cosa che vorrei provare sta estendendo AutoCompleteTextView e di esclusione che il metodo di sempre restituisca true.

Nota. Tenete presente che questo cambiamento potrebbe in futuro e si può ottenere rotto

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top