当用户单击“提交”时,如何使用复选框设置数据?我想获取isChecked()中的所有数据
我试试看这个代码不起作用。
肌转接器
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
当用户检查完成时,用户单击submit
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怎么设置?
发布于 2017-07-04 14:07:44
将一个布尔参数isChecked添加到您的模型类中,然后执行如下操作
viewHoder.cx_select_invite.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
chatFriendsListModels.isChecked(isChecked);
}
});然后在你的最后提交按钮上这样做
tx_submit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
for (int i=0;i<chatFriendsListModels.size();i++){
if(chatFriendsListModels.isChecked()==true)
String id = chatFriendsListModels.get(i).getId();
// you do what you want with id here
}
}
});发布于 2017-07-04 13:54:01
问题似乎是在for循环中使用两个不同的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))
}发布于 2017-07-04 13:58:22
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); https://stackoverflow.com/questions/44907629
复制相似问题