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);
}
Était-ce utile?

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top