2013-07-22 12 views
6

Ich befülle meine AutoCompleteTextView mit Daten von einem Webserver erhalten. Das dauert 3-5 Sekunden. Wenn es nicht darauf hinweist, dass es ein AutoComplete ist, wartet niemand. Daher möchte ich so einen Indikator zeigen:Ladeanzeige rechts in einer AutoCompleteTextView

enter image description here

Ich versuchte dies:

private class getAutoCompletes extends AsyncTask<String, Void, String> { 

private String response; 
@Override 
protected String doInBackground(String... params) { 
    //get autocomplete data 
    return response; 
} 
@Override 
protected void onPostExecute(String result) { 

autoComplete.setCompoundDrawablesWithIntrinsicBounds(0, 0, 0, 0); 
ArrayAdapter<String> AutoCompleteAdapter = new ArrayAdapter<String>(
        MainActivity.this, 
        android.R.layout.simple_dropdown_item_1line, autocompletes); 
autoComplete.setAdapter(AutoCompleteAdapter); 
autoComplete.showDropDown(); 
} 
@Override 
protected void onPreExecute() { 
    super.onPreExecute(); 
    autoComplete.setCompoundDrawablesWithIntrinsicBounds(0, 0, 
      R.drawable.rotating_drawable, 0); 
} 
} 

R.drawable.rotating_drawable

<animation-list xmlns:android="http://schemas.android.com/apk/res/android" > 

    <item 
     android:drawable="@drawable/spinner1" 
     android:duration="50"/> 
    <item 
     android:drawable="@drawable/spinner2" 
     android:duration="50"/> 
    <item 
     android:drawable="@drawable/spinner3" 
     android:duration="50"/> 
    <item 
     android:drawable="@drawable/spinner4" 
     android:duration="50"/> 

</animation-list> 

Aber das didn‘ t arbeiten. Der rechte Drawable ist stationär.

ist auch die obere Bild Art eines Layouts eine Suche mit ImageView, AutoCompleteTextView, ProgressBar und geht Button alle in einer no-Grenzen Art von Hintergrund? So, dass das progressbar wie sein innerhalb der AutoCompleteTextView aussieht.

Vielen Dank.

Antwort

0

Sie möchten Fortschrittsbalken und keine Spinner verwenden. Verwenden Sie die grafische Ansicht, um sie über Ihre AutoCompleteTextView-Felder zu legen und ihre ID festzulegen. Ich habe meins auf progressLoading gesetzt.

<ProgressBar 
    android:id="@+id/progressLoading" 
    style="?android:attr/progressBarStyleSmall" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignRight="@+id/autoCompleteTextViewId" 
    android:layout_alignTop="@+id/autoCompleteTextViewId" 
    android:paddingTop="14dip" 
    android:paddingRight="10dip" /> 

Dann in Ihrer Aktivität/Fragment:

final ProgressBar barProgress = (ProgressBar) findViewById(R.id.progressLoading); 
originProgress.setVisibility(View.GONE); 

Es wird automatisch sichtbar, so haben wir es zunächst verborgen. Wir setzen es dann auf Ihrem addTextChangedListener in der AutoCompleteTextView auf VISIBLE. Wenn diese Aufgaben abgeschlossen sind, setzen Sie sie zurück auf "Versteckt".

Verwandte Themen