Android 在listview中单击复选框
我看了其他问题,但没有一个能满足我的需要 我有一个列表视图,其中显示了一个对象(报警)列表,其中包含一些文本视图和一个复选框。可以想象,此复选框用于激活和停用该警报 当我到达这个屏幕(报警列表)时,它会检查数据库中的活动状态,因此一些复选框被选中,而另一些则没有 我需要的是单击复选框,并更改数据库中该报警的当前状态。离开屏幕前不检查所有复选框的状态!!!我已经阅读了使用selectedItems或Holder类的解决方案,但不适合我 我想我需要在复选框(AlarmAdapter中)中定义onClick事件,但报警列表在活动(ListAlarms)中,因此我不知道如何“告诉”报警列表“这是已单击的复选框(报警),然后更新其活动状态” 有什么想法吗?是否可以控制行中的操作(使用McClickListener)而不是单击复选框Android 在listview中单击复选框,android,listview,checkbox,Android,Listview,Checkbox,我看了其他问题,但没有一个能满足我的需要 我有一个列表视图,其中显示了一个对象(报警)列表,其中包含一些文本视图和一个复选框。可以想象,此复选框用于激活和停用该警报 当我到达这个屏幕(报警列表)时,它会检查数据库中的活动状态,因此一些复选框被选中,而另一些则没有 我需要的是单击复选框,并更改数据库中该报警的当前状态。离开屏幕前不检查所有复选框的状态!!!我已经阅读了使用selectedItems或Holder类的解决方案,但不适合我 我想我需要在复选框(AlarmAdapter中)中定义onCl
非常感谢 我想如果你阅读这里的回复,你会得到你的答案:
最后,我做了一个非清洁解决方案: 适配器中的以下代码:
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事件中设置一个标志。然后可以访问此对象并检查标志。很抱歉创建新答案,但我的代表级别不够高,无法发表评论