我正在实施类似类别的内容,因此产品可以属于1个或多个类别
现在我为CheckBox设置一个标签
<CheckBox
android:id="@+id/c1"
android:tag="checkbox1"
android:text="Title"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
继续
当用户按保存时,我检查是否选中了每个复选框,然后将标签添加到arraylist并将其转换为用逗号分隔的String并保存
当我需要获取列表并设置选中的复选框时,我从db接收了String,拆分为String [],然后对其进行迭代,使用getResource在android中查找元素,然后将其设置为select = true。
我看到这就像一项艰巨的工作,我前一段时间看到(想起),只是使用groupOfCheckBox.getSelected();
如果选择了数字1和2,则返回1,2 ..
并通过groupofCheckBox.setSelect(“ 1,2”)进行设置很容易
但我再也找不到了,有人知道我是在做梦还是真的有办法做到这一点
最佳答案
我做了一个名为CheckBoxGroupView的自定义视图:
import android.content.Context;
import android.util.AttributeSet;
import android.widget.CheckBox;
import android.widget.GridLayout;
import android.widget.GridView;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
public class CheckBoxGroupView extends GridLayout {
List<CheckBox> checkboxes = new ArrayList<>();
public CheckBoxGroupView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public void put(CheckBox checkBox) {
checkboxes.add( checkBox);
invalidate();
requestLayout();
}
public void remove(Integer id) {
// TODO: Remove items from ArrayList
}
public List<?> getCheckboxesChecked(){
List<CheckBox> checkeds = new ArrayList<>();
for (CheckBox c : checkboxes){
if(c.isChecked())
checkeds.add(c);
}
return checkeds;
}
public List<Object> getCheckedIds(){
List<Object> checkeds = new ArrayList<>();
for (CheckBox c : checkboxes){
if(c.isChecked())
checkeds.add(c.getTag());
}
return checkeds;
}
@Override
protected void onAttachedToWindow() {
super.onAttachedToWindow();
for(CheckBox c: checkboxes) {
addView(c);
}
invalidate();
requestLayout();
}
@Override
protected void onFinishInflate() {
super.onFinishInflate();
}
}
这是使用CheckBoxGroupView的布局的示例:
<com.example.views.CheckBoxGroupView
android:id="@+id/cbGroup"
android:columnCount="2"
android:layout_width="match_parent"
android:layout_height="wrap_content">
</com.example.views.CheckBoxGroupView>
设置和获取ID:
CheckBoxGroupView cbGroup = (CheckBoxGroupView) findViewById(R.id.cbGroup);
Checkbox cb = new CheckBox(this);
cb.setTag(1);
cb.setText("Banana");
cbGroup.put(cb);
cbGroup.getCheckedIds().toString();
关于android - android获取组中的选定复选框,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33649492/