基本上我在 for 循环中创建按钮,我需要每个按钮在按下时返回不同的值。
我曾认为创建自己的 onClickListener() 并在初始化时将所需的数据作为参数传递是可行的。我想出的内容似乎没有语法错误,但是在运行时单击按钮时,应用程序崩溃。
这是迄今为止我所拥有的简化版本。
int counter = 1;
for( Program element : someList)
{
//some other code for dynamically creating textviews to stick the buttons in
//code which creates the buttons on the fly
moreInfo = new Button(this);
moreInfo.setText("More Info");
moreInfo.setOnClickListener(new DynamicOnClickListener(counter));
counter++;
}
自定义监听器类
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Toast;
public class DynamicOnClickListener implements OnClickListener
{
int counter;
public DynamicOnClickListener(int acounter) {
this.counter = acounter;
}
public void onClick(View v) {
Log.v("DynamicOnClickListener","1");
Toast.makeText(v.getContext(), counter, Toast.LENGTH_LONG).show();
}
}
所以理论上如果这有效,每个按钮都会返回一个不同的数字,希望这是有道理的。