Android problème AutoCompleteTextView onClick
-
09-10-2019 - |
Question
J'ai créé un AutoCompleteTextView
pour rechercher une liste de titres de cours (obtenu à partir d'un sqlite db) et ce que je veux faire est, lorsque l'utilisateur clique sur un titre dans le menu déroulant, l'ensemble des informations de la base de données au sujet de sa sélection apparaît dans une vue de texte créé sous la AutoCompleteTextView
.
Je suis assez nouveau à la programmation, en particulier pour Android et je voudrais vraiment apprécier si quelqu'un pouvait me expliquer comment setOnItemClickListener
exactement à l'utilisation d'appeler une instance dans la base de données dans le TextView
ci-dessous.
Le code pour la mise en page (R.layout.main_courses) est
<?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>
et le code de la AutoCompleteTextView j'ai écrit à ce jour est:
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);
}
La solution
Tout d'abord, vous devriez essayer d'utiliser un CursorAdapter
au lieu d'obtenir un tableau de lui. Consultez ce lien pour plus d'informations.
Il y a une méthode AutoCompleteTextView
qui vous permettent de décider combien de lettres, l'utilisateur doit saisir avant le menu déroulant est affiché, setThreshold . Le problème est qu'il ne permet> = 1 valeurs.
Si vous cochez cette classe src le code , les bonnes nouvelles sont que la variable définie par setThreshold()
est utilisé uniquement dans cette méthode:
public boolean enoughToFilter() {
return getText().length() >= mThreshold;
}
La première chose que je voudrais essayer étend AutoCompleteTextView
et remplacer cette méthode pour revenir toujours vrai.
NOTE:. Gardez à l'esprit que cela pourrait changer à l'avenir, et il peut se déchirait