2011-07-07 13 views
7

Jak wyświetlić niektóre domyślne sugestie dotyczące AutoCompleteTextView, zanim użytkownik coś cokolwiek napisze? Nie mogę znaleźć sposobu, aby to zrobić, nawet przy tworzeniu niestandardowej klasy, która rozszerza AutoCompleteTextView.Android: AutoCompleteTextView z domyślnymi sugestiami

Chcę pokazać sugestie dla wspólnych wartości wejściowych, aby zapisać użytkownika od pisania.

Wszelkie sugestie?

Odpowiedz

-1

Jeśli nie chcesz, aby był dynamiczny, chciałbym mieć tablicę ciągów w zasobach, a następnie po prostu załadować tablicę, gdy zostanie wyświetlony widok AutoCompleteTextView. Jak:

public class CountriesActivity extends Activity { 
    protected void onCreate(Bundle icicle) { 
     super.onCreate(icicle); 
     setContentView(R.layout.countries); 

     ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, 
       android.R.layout.simple_dropdown_item_1line, COUNTRIES); 
     AutoCompleteTextView textView = (AutoCompleteTextView) 
       findViewById(R.id.countries_list); 
     textView.setAdapter(adapter); 
    } 

    private static final String[] COUNTRIES = new String[] { 
     "Belgium", "France", "Italy", "Germany", "Spain" 
    }; 
} 

które można znaleźć na http://developer.android.com/reference/android/widget/AutoCompleteTextView.html

Innym sposobem, który zrobiłem kilka razy, co pozwala mu uczyć się od użytkownika jest o użyciu połączenia z bazą danych z IE prosty kursora. Podczas tworzenia bazy danych można wstawić niektóre wartości domyślne. Here's przykład z użyciem prostego adaptera kursora: http://androidcommunity.com/forums/f4/how-to-use-autocompletetextview-with-simplecursoradapter-15875/

Edit 1:

Jednym z pomysłów, aby wyświetlić listę, zanim użytkownik zacznie typ jest mieć prosty ListView poniżej EditText. Nie wiesz, czy możesz wywołać widok autocompletetextview, aby wyświetlić sugestie, powinno być możliwe. Być może potrzebujesz stworzyć własną klasę autocompletetextiew.

+0

David, twoja odpowiedź wyświetli listę tylko wtedy, gdy użytkownik zacznie pisać. To, czego szukam, to pokazać listę sugestii (nie musi być dynamiczna), nawet zanim użytkownik zacznie pisać. Dowolny pomysł? –

+0

Och, myślę, że jestem trochę zmęczony. Zobaczę, co wymyślę. Jeśli wymyślę coś nowego, edytuję swoją odpowiedź. –

4

Powinieneś podklasę AutoCompleteTextView i zastąpić enoughToFilter(), aby cały czas zwracać true. Następnie możesz zadzwonić pod numer performFiltering("",0) (jest to funkcja chroniona, dzięki czemu możesz wyeksportować to połączenie za pośrednictwem publicznej funkcji w klasie).

Coś takiego: odpowiedź

public class ContactsAutoCompleteTextView extends AutoCompleteTextView { 


    public ContactsAutoCompleteTextView(Context context) { 
     super(context); 
    } 

    public ContactsAutoCompleteTextView(Context context, AttributeSet attrs) { 
     super(context, attrs); 
    } 

    public ContactsAutoCompleteTextView(Context context, AttributeSet attrs, int defStyle) { 
     super(context, attrs, defStyle); 
    } 

    @Override 
    public boolean enoughToFilter() { 
     return true; 
    } 

    public void temp() { 
     performFiltering("",0); 
    } 
} 
2

Itay Kahana jest rzeczywiście poprawna. Dodam tylko, że zamiast tworzyć funkcję temp(), można zastąpić funkcję onFocusChanged. Osobiście użyłem:

@Override 
     protected void onFocusChanged (boolean focused, int direction, Rect previouslyFocusedRect) { 
      if(focused) 
       performFiltering("", 0); 
      super.onFocusChanged(focused, direction, previouslyFocusedRect); 
     } 
Powiązane problemy