【问题标题】:ListView of Progress Bars in androidandroid中进度条的ListView
【发布时间】:2016-02-20 03:10:54
【问题描述】:

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

【问题讨论】:

  • 创建一个自定义列表适配器,其中布局包含进度条...
  • 创建recyclerView和adapter更舒服。

标签: android listview android-listview android-progressbar


【解决方案1】:

是的,这是可能的,您必须创建一个自定义列表视图,并且可以在您想要添加时动态添加项目

创建一个包含您的 listView 的布局

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

创建一个项目布局,它将代表您的列表视图中的单个项目,并创建一个列表视图适配器,它将为您的列表中的每个项目分配您的值

公共类 ListAdapter 扩展 ArrayAdapter{

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;
}

}

在上面的代码YourDataModel中你的java类包含你的数据 最后在你的主要设置中,让它发挥作用

ListAdapterHome listAdapter = new ListAdapter(YourActivity.this,
        R.layout.item, ArrayListOfYourDataModel);   // pass the arrayList of your dataModel there

ListView listView = (ListView) view.findViewById(R.id.listView);
listView.setAdapter(listAdapterHome);

【讨论】:

    【解决方案2】:

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

    检查这个问题:Custom Adapter for List View

    仅供参考:ListAdapter 是生成 ListView 的视图并分配其值的类。通常,如果您生成一个 SimpleArrayAdapter,您会传递您希望它创建的布局。如果您只想在布局中设置一些文本,则此方法有效。但是,要使用像 ProgressBar 这样特定的视图,您必须创建自己的 ListAdapter 来处理该特定视图。

    【讨论】:

      猜你喜欢
      • 2015-01-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-21
      相关资源
      最近更新 更多