android中进度条的ListView

时间:2015-11-18 11:40:25

标签: android listview android-listview android-progressbar

我想创建一个可滚动的进度条列表。进度条的数量和每个进度条的内容是动态决定的,并在运行时决定。 是否可以在ListView中放置创建和放置进度条?我在互联网上找不到任何相关资源,因此想确认在当前的android框架中是否可以实现这一点。

2 个答案:

答案 0 :(得分:1)

有可能。您必须编写自己的ListAdapter(我建议覆盖SimpleArrayAdapter,但这取决于您的数据)并覆盖getView方法以生成包含ProgressBar的视图。

请检查此问题:Custom Adapter for List View

FYI:ListAdapter是生成ListView视图并分配其值的类。通常,如果生成SimpleArrayAdapter,则传递要创建的Layout。如果您只想在布局中设置一些文本,那就可以了。但是,要使用特定于ProgressBar的View,您必须创建自己的ListAdapter来处理该特定视图。

答案 1 :(得分:1)

是的,您可以创建自定义listView,并且可以在想要添加时动态添加项目

创建一个包含listView

的布局
if (string.IsNullOrWhiteSpace(model.Passenger_Details.Phone_Mobile) && string.IsNullOrWhiteSpace(model.Passenger_Details.Phone_Home) && string.IsNullOrWhiteSpace(model.Passenger_Details.Phone_Work))
                    {
                        ModelState.AddModelError("Passenger_Details.Phone_Mobile", Umbraco.GetDictionaryValue("Booking.Validation.OnePhoneRequired"));
                        ModelState.AddModelError("Passenger_Details.Phone_Home", string.Empty);
                        ModelState.AddModelError("Passenger_Details.Phone_Work", string.Empty);
                    }

创建一个项目布局,它将代表listView的单个项目并创建一个listViewAdapter,它将为列表中的每个项目分配值

公共类ListAdapter扩展了ArrayAdapter {

<ListView
    android:id="@+id/listView"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" />

}

在上面的代码中YourDataModel是包含你的数据的java类 并在你的主要设置中最后使所有的事情发挥作用

private final Context context;
private int layoutResourceID;
private ArrayList<YourDataModel> objects;


public ListAdapter(Context context, int layoutResourceID, ArrayList<YourDataModel> objects) {
    super(context, layoutResourceID, objects);

    this.context = context;
    this.layoutResourceID = layoutResourceID;
    this.objects = objects;
}

@Override
public View getView(int position, final View convertView, ViewGroup parent) {

    View row = convertView;

    final ListHolder listHolder;
    if(row == null) {
        LayoutInflater inflater = ((Activity)context).getLayoutInflater();
        row = inflater.inflate(layoutResourceID, parent, false);

        itemProgressBar = (ProgressBar) row.findViewById(R.id.item_progressbar);

        row.setTag(listHolder);

    } else {
        listHolder = (ListHolder) row.getTag();
    }


    final DataCategory list = objects.get(position);    // get your data object

    // assign values to your items of listView



    return row;
}

class ListHolder {
    ProgressBar itemProgressBar;
}