列表视图中的onclick复选框

时间:2014-11-25 00:25:46

标签: android listview checkbox

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

我有一个列表视图,显示包含一些文本视图和复选框的对象(警报)列表。如您所想,此复选框用于激活和停用该警报。

当我到达此屏幕(警报列表)时,它会检查数据库中的活动状态,因此会检查一些复选框,而不检查其他复选框。

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

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

有什么想法吗?也许控制行中的操作(使用OnItemClickListener)而不是单击复选框?

非常感谢!!!

3 个答案:

答案 0 :(得分:1)

我想如果您在此处阅读回复,您将得到答案:

How to get selected list items from a Listview with checkBox and Custom Adapter?

答案 1 :(得分:0)

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

适配器中的此代码:

    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();               
        }
    });

如果有人知道如何在活动中获取onClick事件,那么回答这里会很好。

谢谢! :)

答案 2 :(得分:0)

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