如何在CheckBox android中使用isChecked设置ArrayList

时间:2017-07-04 13:42:35

标签: java android checkbox

如何在用户点击提交时使用复选框设置数据?我想获取isChecked()

中的所有数据

我尝试使用的代码并不起作用。

myadapter

viewHoder.cx_select_invite.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
    @Override
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
        if (isChecked) {
            Log.d("ChatGroupInviteAdap", "onClick position: " + position);
            Log.d("ChatGroupInviteAdap", "onClick getFirstname: " + chatFriendsListModels.get(position).getFirstname());
            id = chatFriendsListModels.get(position).getId();
            ChatGroupInviteFragment.dataMember.add(id);
        }

        if (!isChecked) {
            id = chatFriendsListModels.get(position).getId();
            ChatGroupInviteFragment.dataMember.remove(id);
        }

    }
});

myFragment

用户点击完成后用户点击提交

tx_submit.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        Log.d(TAG, "OnClick: " + ChatGroupInviteFragment.dataMember.size());

        for (int i=0;i<ChatGroupInviteFragment.dataMember.size();i++){
            Log.d(TAG, "OnClick2 : " + ChatGroupInviteFragment.dataMember.get(i));
        }
    }
});

用户unChecked时出现错误

  

致命的例外:主要                                                                            处理:xxx.xx.x,PID:20496                                                                            java.lang.IndexOutOfBoundsException:索引36无效,大小为3

36 is id unChecked

and 3 = size isChecked

如何设定?

3 个答案:

答案 0 :(得分:1)

{{1}}

答案 1 :(得分:0)

问题似乎是您在List循环中使用了两个不同的for

 for (int i=0;i<ChatGroupInviteFragment.getListFriend.size();i++){
                    Log.d(TAG, "OnClick2 : " + ChatGroupInviteFragment.dataMember.get(i))            
 }

在这里,您正在迭代ChatGroupInviteFragment.getListFriend列表,其大小似乎 36 。当您从ChatGroupInviteFragment.dataMember获取数据时,其大小似乎 3 ,因此ArrayOutOfBoundException

您应该更改为:

for (int i=0;i<ChatGroupInviteFragment.dataMember.size() - 1;i++)
 {
  Log.d(TAG, "OnClick2 : " + ChatGroupInviteFragment.dataMember.get(i))            
 }

答案 2 :(得分:0)

getView():

viewHoder.cx_select_invite.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
            if (isChecked) {


                int position=  viewHolder.checkbox.getTag(); //Try to get position this way

                id = chatFriendsListModels.get(position).getId();
                ChatGroupInviteFragment.dataMember.add(id);
            }
            if (!isChecked) {
                id = chatFriendsListModels.get(position).getId();
                ChatGroupInviteFragment.dataMember.remove(id);
            }

        }
    });

    viewHolder.checkbox.setTag(position);