在ListView中,Android的进度条始终是不确定的。

8

我正在尝试在ListView中设置固定进度,但是我只看到一个不确定的旋转圆圈...我做错了什么?(我相信答案很简单...只是我没有看到它)

针对以下适配器布局xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
          android:layout_width="match_parent"
          android:layout_height="match_parent"
          android:orientation="vertical"
    >
<TextView
        android:id="@+id/some_text"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        />
<ProgressBar
        android:id="@+id/some_progress"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        />

代码:

public class SomeListAdapter extends ArrayAdapter<MyItem> {

private static class ViewHolder {
    TextView nameTextView;
    ProgressBar valueProgressBar;
}

public BestChoiceListAdapter(Context context, List<MyItem> items) {
    super(context, R.layout.list_item, items);
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    ViewHolder holder;
    View view = convertView;
    if (view == null) {
        LayoutInflater vi = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        view = vi.inflate(R.layout.list_item, null);

        holder = new ViewHolder();
        holder.nameTextView = (TextView) view.findViewById(R.id.some_text);
        holder.valueProgressBar = (ProgressBar) view.findViewById(R.id.some_progress);

        view.setTag(holder);
    } else {
        holder = (ViewHolder) convertView.getTag();
    }

    MyItem optionItem = getItem(position);

    holder.nameTextView.setText(optionItem.getOptionName());
    int progress = (int) (optionItem.getOptionValue());

    holder.valueProgressBar.setProgress(progress);

    return view;
}
}
2个回答

12

最简单的方法是将水平样式应用于它:

<ProgressBar
    android:id="@+id/some_progress"
    style="@android:style/Widget.ProgressBar.Horizontal"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    />

这将设置所有属性,否则您需要手动添加才能应用确定进度模式。

如果您感到好奇,以下是该系统样式的外观,以防您想逐个应用属性:

<style name="Widget.ProgressBar.Horizontal">
    <item name="android:indeterminateOnly">false</item>
    <item name="android:progressDrawable">@android:drawable/progress_horizontal</item>
    <item name="android:indeterminateDrawable">@android:drawable/progress_indeterminate_horizontal</item>
    <item name="android:minHeight">20dip</item>
    <item name="android:maxHeight">20dip</item>
</style>

希望对你有帮助


搞定了!但愿这能更明显一些。 - Jeff Campbell

0

不确定模式更改为false!

<ProgressBar
    android:id="@+id/some_progress"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:indeterminate="false"
    />

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接