gpt4 book ai didi

java - for 循环内 if 语句中的复选框以相反的方式工作

转载 作者:行者123 更新时间:2023-12-01 11:55:21 24 4
gpt4 key购买 nike

我有一个 for 循环,它在表格布局中的每个表格行中显示 2 个 TextView 和一个复选框。我有一个 if 语句,它显示一个 toast 来测试复选框的 isChecked 函数,但除了最后一个表行之外,if 语句的工作原理相反。为什么会这样,我该如何解决它?

for (Integer j = 0; j < count; j++)
{

tableRow1 = new TableRow(getApplicationContext());
textViewMaster = new TextView(getApplicationContext());
textViewMaster.setText(c.getString(c.getColumnIndex("StudentID")));
textViewMaster.setPadding(20, 20, 20, 20);
textViewMaster.setTextColor(getResources().getColor(R.color.redactionbar));
textViewMaster.setTextSize(TypedValue.COMPLEX_UNIT_DIP,25);
textViewMaster.setTypeface(null, Typeface.BOLD);
tableRow1.addView(textViewMaster);

textViewMaster2 = new TextView(getApplicationContext());
textViewMaster2.setText(c.getString(c.getColumnIndex("LastName")));
textViewMaster2.setPadding(20, 20, 20, 20);
textViewMaster2.setTextColor(getResources().getColor(R.color.redactionbar));
textViewMaster2.setTextSize(TypedValue.COMPLEX_UNIT_DIP,25);
textViewMaster2.setTypeface(null, Typeface.BOLD);
tableRow1.addView(textViewMaster2);

tableRow1.setClickable(true);
tableRow1.setLongClickable(true);
tableLayout1.setClickable(true);


checkBox = new CheckBox(getApplicationContext());
checkBox.setChecked(true);

checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener()
{
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean b)
{
if (checkBox.isChecked())
{
searchView.setEnabled(false);
arrayList.add(container1);
arrayList2.add(container2);
arrayList3.add(container3);
Toast toast = Toast.makeText(getApplicationContext(),"Its checked", Toast.LENGTH_SHORT);
toast.show();

}

else
{
arrayList.remove(container1);
arrayList2.remove(container2);
arrayList3.remove(container3);
Toast toast = Toast.makeText(getApplicationContext(), "Its not checked", Toast.LENGTH_SHORT);
toast.show();
}
}
});

checkBox.setVisibility(View.VISIBLE);
tableRow1.addView(checkBox);
tableLayout1.addView(tableRow1);

c.moveToNext() ;
}

非常感谢任何帮助!

最佳答案

在当前实现中,checkBox 保存在 for 循环 的最后一次迭代期间创建的最后一个 CheckBox 对象,因此使用 onCheckedChanged 方法的第二个参数,即if true 表示 CheckBox 已选中,否则未选中:

 @Override
public void onCheckedChanged(CompoundButton compoundButton, boolean b)
{
if (b){ // or use compoundButton.isChecked()
// code if checkbox is checked
} else{
// code if checkbox is not checked
}
}

关于java - for 循环内 if 语句中的复选框以相反的方式工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28495512/

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