AutoCompleteTextView: getItemAtPosition == null

  • 2 Antworten
  • Letztes Antwortdatum
F

Flixius

Fortgeschrittenes Mitglied
4
Hallo,

ich habe ein merkwürdiges Verhalten und weiß einfach nicht mehr weiter. Der Fehler tritt bisher nur auf HTC Geräten mit Android 2.x auf. Alle anderen Geräte und Versionen haben überhaupt keine Probleme.

Wenn man auf einen Vorschlag in der AutoCompleteTextView klickt, dann komme ich nicht an das selektierte Item. Ich nutze keinen CustomAdapter und sowohl Position als auch ItemCount werden richtig gesetzt.

Das ganze tritt sowohl im Landscape als auch im Portraitmodus auf. Daran liegt es also nicht: android - AutoCompleteTextView OnItemClickListener null param (landscape mode on HTC Desire S) - Stack Overflow

Hier mein Code. Das ist ja wirklich absolut basic... Ich weiss echt nicht was da los ist. :/ Vielleicht hat ja jemand eine Idee:

Code:
List<String> searchStrings = GetMyList();
ArrayAdapter<String> actvAdaper = new ArrayAdapter<String>(context, android.R.layout.simple_dropdown_item_1line, searchStrings);
actv.setAdapter(actvAdaper);

private void OnAutoCompleteTextViewClicked(AutoCompleteTextView actv) {    
  actv.setOnItemClickListener(new OnItemClickListener() {

   public void onItemClick(AdapterView<?> arg0, View arg1, int pos, long arg3) {
          Log.w("count", ""+arg0.getCount()); 
         //count ist so groß wie die vorschlagsliste
         Log.w("pos", ""+pos); //pos hat die richtige position
         //arg0.getSelectedItem() == null
         String str = (String) arg0.getItemAtPosition(pos); // == null
[...]
 
Auf den ersten Blick sieht das in der Tat alles richtig aus.

Könnte es sein, dass das zugrunde liegende Array asynchron zerschossen wird?
Schau dir doch mal den Gesamtinhalt von dem Array an.
Stimmt nur der eine Wert nicht, oder ist das Ding komplett gelöscht?
Wie sieht zu diesem Zeitpunkt das Ergebnis von GetMyList() aus?
Und: Hat der Adapter immer sein notifyDataSetChanged bekommen?
 
Oh man. Ich habs endlich gefunden.

Habe nun auch ein Gerät zum testen in die Hand bekommen und es nachvollziehen können. Beim OnClick hatte ich noch ein hidekeyboard(); über dem auslesen. Wenn ich das danach mache, dann klappt alles. :)

Code:
private void hidekeyboard(){
InputMethodManager imm = (InputMethodManager) ctx
                .getSystemService(Context.INPUT_METHOD_SERVICE);
        if (imm != null) {
            AutoCompleteTextView actv = (AutoCompleteTextView) view
                    .findViewById(R.id.actv);
            actv.dismissDropDown();
            imm.hideSoftInputFromWindow(actv.getWindowToken(), 0);
        }
}
 
Zurück
Oben Unten