Android ListView以编程方式创建单元格

Android ListView以编程方式创建单元格,android,listview,Android,Listview,我需要在ListView的单元格中放置一系列复选框。问题是,我不知道提前多少。我在猜测,但如果我错了,请纠正我,我需要以编程方式创建它。只有几个单元,所以我不担心可重用性。我该怎么做呢 没有xml只需在getView方法-->中构建单元格这是否与创建视图并添加到其中一样简单 xml,但将复选框附加到xml-->我不知道如何执行此操作 是否有某种动态xml复选框列表可供我使用 最简单、最灵活的方法是使用ArrayAdapter,并创建一个看起来像您想要的单个单元格的XML布局。将数据放入数组中,创

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

  • 没有xml只需在getView方法-->中构建单元格这是否与创建视图并添加到其中一样简单
  • xml,但将复选框附加到xml-->我不知道如何执行此操作
  • 是否有某种动态xml复选框列表可供我使用

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

    我始终更喜欢使用XML来分隔控制器(或控制应用程序的代码)的表示形式

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

    查看,您可以在其中看到带有适配器的listview示例

    --编辑:

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

    --编辑2: 下面是一个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>
    

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

    你想要一行多个复选框还是每行一个复选框?我想要一行多个复选框。我基本上有两种行样式,一种是复选框,另一种是选择器。对不起,我的问题模棱两可。我想要一行多个复选框。我基本上有两种行样式,一种有复选框,另一种称为选择器。啊,我曾经做过类似的事情。选项1很好,只需编写代码来创建所需的复选框。但是如果你知道在你去挑选之前你会使用最多的复选框,我会创建一个包含n个复选框的单元格,然后将最后几个复选框的可见性设置为visibility.GONE,这样就可以显示正确的数字。这是一个很好的解决方案,但我没有max。不过,我可能想考虑一下这样做!!谢谢你的回复。这正是我正在努力解决的问题。如何“在xml中定义一个视图,您可以在其中添加复选框”。
    //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);