我为按钮和桌子创建了一个arraylist。
private ArrayList<Button> btDec = new ArrayList<Button>();
private ArrayList<TableRow> tr = new ArrayList<TableRow>();
然后我想创建一个新的按钮和tablerow,并使用onCreate()方法中的以下代码将tem添加到tablelayout。
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
btDec.add(new Button(this));
tr.add(new TableRow(this));
int i = tr.size() - 1;
btDec.get(i).setId(i);
btDec.get(i).setText("-");
tr.get(i).addView(btDec.get(i));
lo.addView(tr.get(i), new TableLayout.LayoutParams(TableLayout.LayoutParams.WRAP_CONTENT, TableLayout.LayoutParams.WRAP_CONTENT));
}
});
所有这些代码都运行正常。 但是下面的代码(也在onCreate()方法中)不起作用。如果按下按钮,则没有任何反应,并且它不会在Logcat中打印任何内容。
for(int i = 0; i < tr.size(); i++)
{
btDec.get(i).setOnClickListener(new View.OnClickListener()
{
public void onClick(View view)
{
Log.i("ButtonListener", "test");
}
});
}
请帮帮我。
答案 0 :(得分:0)
问题在于此代码
for(int i = 0; i < tr.size(); i++)
{
btDec.get(i).setOnClickListener(new View.OnClickListener()
{
public void onClick(View view)
{
Log.i("ButtonListener", "test");
}
});
}
你不能在onCreate()
中执行此操作,因为tr
列表中有空!您应该在创建按钮时添加onClick侦听器。