Прогресс ProgressBar не работает должным образом при запуске активности

Я использую ExpandableListActivity, а внизу у меня есть ProgressBar, чтобы определить, сколько строк было проверено.

XML активности:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main_layout"
android:layout_width="match_parent"
android:layout_height="match_parent" >

<LinearLayout
    android:id="@+id/activity_main_content"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:weightSum="100" >

    <include
        android:id="@+id/activity_checklist_titlebar"
        android:layout_width="wrap_content"
        android:layout_height="0dp"
        android:layout_weight="10"
        layout="@layout/titlebar" />

    <ExpandableListView
        android:id="@+id/android:list"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="90" >
    </ExpandableListView>
</LinearLayout>

<ProgressBar
    android:id="@+id/activity_checklist_progress"
    style="?android:attr/progressBarStyleHorizontal"
    android:layout_width="match_parent"
    android:layout_height="@dimen/height_activity_checklist_progress"
    android:layout_alignParentBottom="true" />

<TextView
        android:id="@+id/activity_checklist_progress_text"
        style="@style/Text.Strong.Medium"
        android:layout_width="wrap_content"
        android:layout_height="@dimen/height_activity_checklist_progress"
        android:gravity="center"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        android:text="0/50" />

</RelativeLayout>

Я обновляю прогресс здесь:

@Override
public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) 
{
    // ...
    TextView overall_progress_text = 
       (TextView) main_layout.findViewById(R.id.activity_checklist_progress_text);
        int overall_progress = checklist.getProgress();
        overall_progress_text.setText(overall_progress + "/" + checklist.size());
    ProgressBar overall_progress_bar = 
       (ProgressBar) main_layout.findViewById(R.id.activity_checklist_progress);
        overall_progress_bar.setProgress(overall_progress);
        overall_progress_bar.setMax(checklist.size());

    return convertView;
}

Как вы можете видеть, у меня есть TextView, который также показывает прогресс, и, по-видимому, значения в порядке. Все работает нормально, когда я начинаю менять состояние флажков в списке, единственная проблема - в начале действия.

ProgressBar показывает это (я думаю, что максимальное значение принимает «100» вместо «9»):

введите здесь описание изображения


person Sergio Carneiro    schedule 01.12.2012    source источник


Ответы (2)


Я просто решил свою проблему, установив максимальное значение перед прогрессом. Кажется, что ProgressBar в Android не работает, даже если вы установите максимум сразу после прогресса...

Изменено это:

overall_progress_bar.setProgress(overall_progress);
overall_progress_bar.setMax(checklist.size());

К этому:

overall_progress_bar.setMax(checklist.size());
overall_progress_bar.setProgress(overall_progress);
person Sergio Carneiro    schedule 01.12.2012

вы можете использовать асинхронную задачу для просмотра хода выполнения и в onProgressUpdate вы можете поместить диалоговое окно или индикатор выполнения ..

person Nirav Tukadiya    schedule 01.12.2012