Mam widok z EditText
, Button
i ListView
. Guzik onClick()
analizuje pewną witrynę (ta część działa poprawnie), ale wyświetlenie przeanalizowanych informacji w ListView
zajmuje trochę czasu, dlatego chcę wyświetlić małą ProgressBar
w miejscu, gdzie po pewnym czasie musi nastąpić ListView
.Jak wyświetlić pasek postępu w widoku podczas wykonywania pracy?
Więc, dodaję to do mojego układu (piszę ważną rolę tutaj):
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/layout1"
android:weightSum="1.0">
<EditText
android:layout_width="0px"
android:layout_height="wrap_content"
android:layout_weight=".86" />
<ImageButton
android:layout_height="match_parent"
android:layout_width="0px"
android:layout_weight=".14" />
</LinearLayout>
<RelativeLayout
android:layout_height="match_parent"
android:layout_width="match_parent"
android:layout_below="@id/layout1"
android:gravity="center"
android:layout_centerInParent="true"
android:id="@+id/progressbar" >
<ProgressBar
android:layout_height="wrap_content"
android:layout_width="wrap_content"
style="@android:style/Widget.ProgressBar.Small" />
</RelativeLayout>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@id/layout1">
<ListView
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
</RelativeLayout>
</RelativeLayout>
W kodzie źródłowym:
progressBar = (RelativeLayout) findViewById(R.id.progressbar);
i za każdym razem chcę pokazać ProgressBar
, mogę to zrobić :
progressBar.setVisibility(View.VISIBLE);
wyłączania:
progressBar.setVisibility(View.INVISIBLE);
Ale to nie działa.
Jak mogę to załatwić?
* Ale to nie działa. * - to nie jest bardzo pomocne. Chcesz lepiej wyjaśnić, na czym polega problem? – Luksprog
Nie widzę żadnego wyświetlanego paska "ProgressBar". Działa tak, jakby działało bez dodawania drobiazgów "ProgressBar". – azizbekian
Zgadzam się z Luksprogiem, ale byłbym skłonny zgadnąć, że twoje parsowanie jest blokowane (więc kody setvisibility nie są wykonywane aż do postsese). Istnieje mnóstwo sposobów rozwiązania tego problemu, ale polecam wykonanie wyszukiwania pasków postępu i asynktaksu (są też inne sposoby, aby to osiągnąć, ale zasadniczo musisz uruchomić niezablokowaną metodę displayprogressbar w tym samym czasie, gdy robisz parsowanie, a następnie w displayprogressbar sprawdź przed zakończeniem procesu parsowania). – logray