Java 方法,该方法扫描listview中的复选框

Java 方法,该方法扫描listview中的复选框,java,android,listview,checkbox,android-checkbox,Java,Android,Listview,Checkbox,Android Checkbox,我正在试验这个示例项目: 我在包含ListView的xml文件中添加了一个按钮。 当它被按下时,我想要一个方法,它可以扫描一系列的复选框,并检查它们是否都被选中 有人能帮我吗?试试这个: private boolean checkBoxes(){ for(SampleData s : dataList) if (s.selected == false) return false; return true; } 循环遍历dataList中的每个条目。如果得到一个未设置的值,则返回fals

我正在试验这个示例项目:

我在包含ListView的xml文件中添加了一个按钮。 当它被按下时,我想要一个方法,它可以扫描一系列的复选框,并检查它们是否都被选中

有人能帮我吗?

试试这个:

private boolean checkBoxes(){
  for(SampleData s : dataList) if (s.selected == false) return false;
  return true;
}

循环遍历dataList中的每个条目。如果得到一个未设置的值,则返回false。如果它们都通过了测试,则返回true:

private boolean allChecked()
{
    for(Object item : dataList)
    {
        if (!(SampleData)item.isSelected())
            return false;
    }
    return true;
}
请注意,dataList被定义为Object类型的ArrayList,而不是SampleData类型的ArrayList。因此,当您迭代每个条目时,需要将其转换为SampleData

编辑:

要使用此选项,请更改活动类,使“适配器”成为类变量:

public class CheckboxListActivity extends ListActivity {

    //Define adapter here so that you can refer to it anywhere within the Activity
    CheckboxListAdapter adapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_checkbox);

        //Set the class level 'adapter' variable
        adapter = new CheckboxListAdapter(getLayoutInflater());
        getListView().setAdapter(adapter);
    }
}
在onClick中,调用变量“adapter”上的新方法:

public void onClickNeste_sjekkliste (View v) {
    boolean ifCheckedAll = adapter.allChecked();

    if (ifCheckedAll == false) {
        Log.d("CheckedAll", "false");
    }
    else if (ifCheckedAll == true) {
        Log.d("CheckedAll", "true");
    }   
}
我不能让它工作。 它总是返回false

我将该方法放入CheckBoxListAdapter.java中

public boolean allChecked() {
    for (Object item : dataList) {
        if (!((SampleData) item).isSelected())
            return false;
    }
    return true;
}
在我的main活动中,我在单击按钮时调用该方法。然后我得到它的价值

public void onClickNeste_sjekkliste (View v) {
    CheckboxListAdapter test = new CheckboxListAdapter(null);
    test.allChecked();
    boolean ifCheckedAll = test.allChecked();

    if (ifCheckedAll == false) {
        Log.d("CheckedAll", "false");
    }
    else if (ifCheckedAll == true) {
        Log.d("CheckedAll", "true");
    }   
}

请添加一些代码来帮助我们。这是因为您正在扫描一个名为“test”的全新适配器,而不是在连接到ListView的onCreate中设置的适配器。CheckBoxListAdpater的初始状态是true和false的混合,因此您总是得到false。您需要调用“适配器”上的方法。请看我的最新答案。