从ListView获取所有选中的项目

时间:2015-11-18 07:23:11

标签: android android-layout android-intent android-activity android-xml

如果我的ListView具有下面的布局,其中每个项目都有一个复选框,那么当我点击onClick()时,如何通过Button方法获取所有选中的项目?< / p>

<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">

        <ListView
            android:id="@+id/listview"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            />

    </LinearLayout>

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Submit"
        android:onClick="submitList"
        />

</RelativeLayout>

onClick()方法:

public void submitList(View view) {
    //
}

4 个答案:

答案 0 :(得分:1)

您可以逐个检查列表视图项目:

for ( int i=0; i < listview.getAdapter().getCount(); i++) {
listview.setItemChecked(i, true);
}

答案 1 :(得分:0)

如果您使用的是SparseBooleanArray,则可以使用ListView.CHOICE_MODE_MULTIPLE来获取已检查的项目。 以下是StackoverFlow question的参考。

答案 2 :(得分:0)

你必须制作一个与listview适配器大小相同的arraylist。之后,当您检查任何列表项时,在数组列表中添加该项。

public ArrayList<String> getCheckedName()
    {
        return array_list;
    }

在适配器类中编写此函数。当您需要检查数据时

ArrayList<String> sName=adapter.getCheckedName();

在onClick方法中使用此sName。

答案 3 :(得分:0)

int len = listview.getCount();
SparseBooleanArray checked = listview.getCheckedItemPositions();
for (int i = 0; i < len; i++) {
    if (checked.get(i))
        String item = yourArrayList.get(i);
}