如何将所有选中的复选框添加到数据库?

时间:2017-11-13 14:06:02

标签: android sqlite checkbox android-sqlite

我通过数据库中的记录动态创建复选框。我可以为数据库中的每条记录成功生成checkboxech。

比我点击按钮后,我想根据选中的复选框在不同的表格中添加记录。我需要通过所有复选框,查看是否已选中,如果是,我需要将id传递给id_participant以创建记录。但是我失去了怎么做。

你能帮帮忙吗?

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    myDB =  new DBAdapter(getContext());
    final View root = inflater.inflate(R.layout.fragment_add_from_db, container, false);
    final LinearLayout layout = root.findViewById(R.id.check_add_layout);
    btn_ad_group = root.findViewById(R.id.btn_add_group);
    Bundle bundle = getArguments();
    if (bundle != null) {
        id_eventu = bundle.getLong("idevent");
    }
    myDB.open();
    pocet = myDB.getParticipantsCount();
    Cursor cursor = myDB.getAllRowsParticipant();
    cursor.moveToFirst();
    for(int i = 0; i < pocet; i++) {
        CheckBox cb = new CheckBox(root.getContext());
        String name = cursor.getString(cursor.getColumnIndex("name"));
        String surname = cursor.getString(cursor.getColumnIndex("surname"));
        String text = name + " " + surname;
        cb.setText(text);
        cb.setHeight(90);
        cb.setId(cursor.getInt(cursor.getColumnIndex("_id")));
        layout.addView(cb);
        cursor.moveToNext();
    }
    myDB.close();

    btn_ad_group.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            myDB.open();
            // here I want to write into database by selected checkboxes
            // I want to read id of checked checkbox and pass it to id_participant
            myDB.insertRowRegistr(id_eventu, id_participant);
            myDB.close();

        }
    });

    return root;
}

1 个答案:

答案 0 :(得分:1)

您没有提供大量信息,所以我会假设一些事情。

如果是LinearLayout&#34;布局&#34;是复选框的父级,您应该能够通过两个函数访问其子级:

int numChildren = layout.getChildCount();
for(int i=0;i<numChildren;i++){
    //create a temporary checkbox variable
    //make it equal to layout.getChildAt(i);
    //if temp is checked, add it to a list or hand it straight to database

应该有效。从未使用过android中的复选框或数据库,但这应该让您访问每个复选框并检查它是否被点击。

<强>更新

此代码可以正常工作。谢谢你的帮助!

btn_ad_group.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            myDB.open();
            int numChildren = layout.getChildCount();
            for(int i=0;i<numChildren;i++){
                CheckBox temp;
                temp = (CheckBox) layout.getChildAt(i);
                if (temp.isChecked()) {
                    id_participant =  (long) temp.getId();
                    myDB.insertRowRegistr(id_eventu, id_participant);
                }
            }
            myDB.close();
            fm.popBackStackImmediate();
        }
    });