这是一个示例代码。我通过使用循环在表行中添加checkbox和textview。一切正常,但每当我试图从另一种方法中取出(checkBox,Textview)时,我都无法得到它。我不知道如何解决这个问题。我尝试过setId,但我无法获得Id。
protected void onCreate(Bundle savedInstanceState) {
TableLayout tl = (TableLayout)findViewById(R.id.tableLayout1);
TableRow[] row = new TableRow[5];
TextView tv[] = new TextView[5];
CheckBox[] cb = new CheckBox[5];
Button clickTestRow;
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
for(int j = 0; j < 5; j ++){
row[j] = new TableRow(this);
tl.addView(row[j]);
tv[j] = new TextView(this);
cb[j] = new CheckBox(this);
tv[j].setText("This is text");
row[j].addView(cb[j]);
row[j].addView(tv[j]);
if(j == 0)
cb[j].setChecked(true);
}
clickTestRow = (Button) findViewById(R.id.clickTestRow);
clickTestRow.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
TableLayout tlid = (TableLayout) findViewById(R.id.tableLayout1);
for(int i = 0; i < 5; i ++){
if(cb[i].isChecked()){
tlid.removeView(row[i]);
}
}
}
});
答案 0 :(得分:0)
这是未经测试的,但现在尝试一下。
这里的关键点是
setContentView
findViewById
您尝试在匿名类中使用的final
变量(onClickListener)public class MainActivity extends Activity {
private TableLayout tl;
private Button clickTestRow;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tl = (TableLayout)findViewById(R.id.tableLayout1);
clickTestRow = (Button) findViewById(R.id.clickTestRow);
final TableRow[] row = new TableRow[5];
final TextView tv[] = new TextView[5];
final CheckBox[] cb = new CheckBox[5];
for(int j = 0; j < 5; j ++){
row[j] = new TableRow(this);
tl.addView(row[j]);
tv[j] = new TextView(this);
cb[j] = new CheckBox(this);
tv[j].setText("This is text");
row[j].addView(cb[j]);
row[j].addView(tv[j]);
}
cb[0].setChecked(true);
clickTestRow.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
for(int i = 0; i < 5; i ++){
if(cb[i].isChecked()){
tl.removeView(row[i]);
}
}
}
});
}
}