如何为listview中的每个项添加复选框

时间:2013-03-02 07:52:52

标签: java android checkbox

我正在开发一款calander应用程序。列表视图,显示所有可用的日历。 如何为它添加一个复选框 之前选择的日历应显示已选中。

我想要一个像这样的列表视图。

textview cb

2 个答案:

答案 0 :(得分:1)

将listview适配器设置为“simple_list_item_multiple_choice”

ArrayAdapter<String> adapter;

List<String> values; // put values in this

//Put in listview
adapter = new ArrayAdapter<UserProfile>(
this,
android.R.layout.simple_list_item_multiple_choice, 
values);
setListAdapter(adapter);   //Set the adpter to list View

第二种方法是通过扩展Base适配器类来创建自定义适配器:

查看链接中的示例:

http://www.mysamplecode.com/2012/07/android-listview-checkbox-example.html

答案 1 :(得分:0)

你可以使用checkedTextView为你的ListView行(使用自定义适配器)并在你的列表视图中指定android:choiceMode =“multipleChoice”

以下是我的代码中的示例:

<CheckedTextView
    android:id="@+id/member_name"
    android:layout_width="match_parent"
    android:layout_height="48dp"
    android:drawableRight="?android:attr/listChoiceIndicatorMultiple"
    android:focusable="false"
    android:focusableInTouchMode="false"
    android:gravity="center_vertical"
    android:paddingLeft="20dp"
    android:textColor="@color/dark_grey_txt" />

在这里,当你点击CheckedTextView

时,它会添加check drawable

现在,将所选项目存储在列表&lt;&gt;你可以点击

添加和删除
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
    CheckedTextView ctv = (CheckedTextView) view.findViewById(R.id.member_name);
    if (ctv != null) {
        if (ctv.isChecked()) {
            ctv.setChecked(false);
            listAdapter.removeSelectedMembers(position);
        } else {
            ctv.setChecked(true);
            listAdapter.setSelectedMembers(position);
        }
    }
}

// adapter添加和删除Item的方法

public void setSelectedMembers(int position) {
    if (!selectedMembersList.contains(String.valueOf(position))) {
        selectedMembersList.add(String.valueOf(position));
    }
}

public void removeSelectedMembers(int position) {
    selectedMembersList.remove(String.valueOf(position));
}