problema Android AutoCompleteTextView onClick
-
09-10-2019 - |
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);
}
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