gpt4 book ai didi

android获取一组选中的复选框

转载 作者:行者123 更新时间:2023-11-29 00:06:09 24 4
gpt4 key购买 nike

我正在实现类似类别的东西,因此产品可以属于 1 个或多个类别

现在我为 CheckBox 设置一个标签,例如

  <CheckBox
android:id="@+id/c1"
android:tag="checkbox1"
android:text="Title"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />

继续

当用户按下保存时,我检查是否选中了每个复选框,然后将标签添加到数组列表并将其转换为以逗号分隔的字符串并保存

当我需要获取列表并设置选中的复选框时,我从 db 接收字符串,拆分为一个字符串 [] 然后迭代它,使用 getResource 在 android 中找到元素,然后将其设置为 select=是的。

我看到这是一项艰巨的工作,我前段时间(记不清了)看到了一组复选框,您只需使用 groupOfCheckBox.getSelected();

如果您选择了数字 1 和数字 2,它会返回 1,2..

将其设置为选中很容易,因为 groupofCheckBox.setSelect("1,2")

但我再也找不到了,有人知道我是在做梦还是真的存在某种方法可以做到这一点

最佳答案

我创建了一个名为 CheckBoxGroupView 的自定义 View :

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获取一组选中的复选框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33649492/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com