Android 在listview中单击复选框

Android 在listview中单击复选框,android,listview,checkbox,Android,Listview,Checkbox,我看了其他问题,但没有一个能满足我的需要 我有一个列表视图,其中显示了一个对象(报警)列表,其中包含一些文本视图和一个复选框。可以想象,此复选框用于激活和停用该警报 当我到达这个屏幕(报警列表)时,它会检查数据库中的活动状态,因此一些复选框被选中,而另一些则没有 我需要的是单击复选框,并更改数据库中该报警的当前状态。离开屏幕前不检查所有复选框的状态!!!我已经阅读了使用selectedItems或Holder类的解决方案,但不适合我 我想我需要在复选框(AlarmAdapter中)中定义onCl

我看了其他问题,但没有一个能满足我的需要

我有一个列表视图,其中显示了一个对象(报警)列表,其中包含一些文本视图和一个复选框。可以想象,此复选框用于激活和停用该警报

当我到达这个屏幕(报警列表)时,它会检查数据库中的活动状态,因此一些复选框被选中,而另一些则没有

我需要的是单击复选框,并更改数据库中该报警的当前状态。离开屏幕前不检查所有复选框的状态!!!我已经阅读了使用selectedItems或Holder类的解决方案,但不适合我

我想我需要在复选框(AlarmAdapter中)中定义onClick事件,但报警列表在活动(ListAlarms)中,因此我不知道如何“告诉”报警列表“这是已单击的复选框(报警),然后更新其活动状态”

有什么想法吗?是否可以控制行中的操作(使用McClickListener)而不是单击复选框


非常感谢

我想如果你阅读这里的回复,你会得到你的答案:


最后,我做了一个非清洁解决方案:

适配器中的以下代码:

    CheckBox active = (CheckBox) view.findViewById(R.id.cb_active);
    active.setOnClickListener(new View.OnClickListener()
    {
        public void onClick(View v)
        {
            a.toggle();
            boolean exists = false;
            for(Alarm aux : modifiedAlarms){
                if(aux.getId() == a.getId()){
                    exists = true;
                }
            }
            if(!exists){
                modifiedAlarms.add(a);
            }
            else{
                //this is to guarantee that the alarm has the same state than the added one.
                a.toggle();
                modifiedAlarms.remove(a);
                a.toggle();
            }
        }
    });

    active.setTag(a);
离开屏幕时,在活动中输入以下代码:

    ImageView back = (ImageView)findViewById(R.id.iv_back);
    back.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {

            ArrayList<Alarm> modified = adapter.getModifiedAlarms();
            for(Alarm a : modified){
                dataalarms.activeAlarm(a.getId(), a.getActive());
            }
            finish();               
        }
    });
ImageView back=(ImageView)findViewById(R.id.iv_back);
back.setOnClickListener(新的OnClickListener(){
@凌驾
公共void onClick(视图v){
ArrayList modified=adapter.getModifiedAlarms();
用于(报警a:已修改){
dataalarms.activeAlarm(a.getId(),a.getActive());
}
完成();
}
});
如果有人知道如何在活动中获取onClick事件,请在这里回答


谢谢!:)

这就是自定义对象的作用。创建这些对象的数组,然后在适配器中复选框的onClick事件中设置一个标志。然后可以访问此对象并检查标志。很抱歉创建新答案,但我的代表级别不够高,无法发表评论