ListView以编程方式创建单元格

时间:2014-03-28 17:25:49

标签: android listview

我需要在ListView的单元格中放置一系列复选框。问题是我提前不知道有多少。我猜,但如果我错了请纠正我,我需要以编程方式创建它。只有几个单元格,所以我不担心可重用性。我该怎么做呢?

  1. 没有xml只是在getView方法中构建单元格 - >这就像创建一个View并添加到它一样简单吗?
  2. xml但附加了xml的复选框 - >我不知道该怎么做。
  3. 我可以使用某种动态xml CheckBox列表吗?

2 个答案:

答案 0 :(得分:2)

我总是喜欢使用XML来分隔控制器的表示(或控制应用程序的代码)。

您只需要创建一个列表视图并定义它的适配器。适配器将有一个XML(一行),您可以在其中设计复选框和您想要的其他元素......

查看documentation,您可以在其中查看带适配器的列表视图示例。

- 编辑:

在您的情况下,您需要在适配器中以编程方式添加复选框。只需在xml中定义一个视图,您可以在其中添加复选框。

- edit2: 这是一个示例XML:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="50dp" >

   <RelativeLayout
           android:layout_width="match_parent"
           android:layout_height="match_parent"
           android:id="@+id/checkboxContainer" >

   </RelativeLayout>

</RelativeLayout>

在你的适配器中

//get the container
LayoutInflater inflater = (LayoutInflater) context
            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View rowView = inflater.inflate(R.layout.NAME_OF_YOUR_XML, parent, false);
RelativeLayout your_container = (RelativeLayout) rowView.findViewById(R.id.checkboxContainer);

//declare your checkbox
CheckBox cb = new CheckBox(context);
cb.setText("your text");

// add the checkbox to your container
your_container.addView(cb);

这只是一个例子。我没有测试代码。也许您应该使用线性布局而不是相对布局来轻松放置复选框。

答案 1 :(得分:0)

最简单,最灵活的方法是使用ArrayAdapter并创建一个看起来像您想要的单个单元格的XML布局。将您的数据放入数组,创建适配器并将其分配给ListView,并且繁荣,您的列表具有正确的行数(单元格)。您还可以轻松自定义绑定,以便每个单元格都具有基于相应数组条目的信息。