我通过数据库中的记录动态创建复选框。我可以为数据库中的每条记录成功生成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;
}
答案 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();
}
});