这是一个示例try代码。我使用循环在表格行中添加了复选框和textview。一切工作正常,除了每当我试图从另一种方法取出(复选框,Textview),我无法得到它。我不知道如何解决这个问题。我尝试了setId,但我无法获得Id。从编程视图获取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]);
}
}
}
});
您应该将'TableLayout tl'移动到您班级顶部的字段中。然后你可以在你的onClickListener中使用这个变量。 –
如果我将它移动到顶部,那么我将得到NPE,我不知道为什么,但是这种方式似乎解决了这个问题。 – user3900009
您仍然需要执行'tl =(TableLayout)findViewById(R.id.tableLayout1);'。 –