我通过动态代码,而不是从XML创建的按钮。
该代码是如下:
dynamicview = (LinearLayout)findViewById(R.id.llayout);
LinearLayout.LayoutParams lprams = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.WRAP_CONTENT,
LinearLayout.LayoutParams.WRAP_CONTENT);
for(int i=0;i<nob;i++){
Button btn = new Button(this);
btn.setId(i+1);
btn.setText("Button"+(i+1));
btn.setLayoutParams(lprams);
dynamicview.addView(btn);
}
我没有找到我在其中能实现OnClickListener到每个按钮,这样我可以根据参考我得到执行操作的方式。
谁能帮我整理出这个问题。 ?
提前致谢,
请参见下面的代码:
for(int i=0;i<nob;i++) {
Button btn = new Button(this);
btn.setId(i+1);
btn.setText("Button"+(i+1));
btn.setLayoutParams(lprams);
final int index = i;
btn.setOnClickListener(new OnClickListener() {
void onClick(View v) {
Log.i("TAG", "The index is" + index);
}
});
dynamicview.addView(btn);
}
我的例子很简单,但是演示了如何获得按钮索引到OnClickListeber
。 您可以访问任何final
在声明匿名类(e..g领域OnClickListener
)。
for(int i=0;i<nob;i++){
Button btn = new Button(this);
btn.setId(i+1);
btn.setText("Button"+(i+1));
btn.setOnClickListener(btnclick); <<<<<<<set click
btn.setLayoutParams(lprams);
dynamicview.addView(btn);
}
并添加此听者之外的任何方法和内部类
OnClickListener btnclick = new OnClickListener() {
@Override
public void onClick(View view) {
switch(view.getId()){
case 1:
//first button click
break;
//Second button click
case 2:
break;
case 3:
//third button click
break;
case 4:
//fourth button click
break;
.
.
.
default:
break;
}
}
};
使用List
和添加Button
是你创建该List
List<Button> list = new ArrayList<Button>();
现在添加您的按钮到列表
for(int i=0;i<nob;i++){
Button btn = new Button(this);
btn.setId(i+1);
btn.setText("Button"+(i+1));
btn.setLayoutParams(lprams);
dynamicview.addView(btn);
list.add(btn);
}
然后使用先进的for循环遍历列表,并添加点击监听器为每个按钮..
for(Button btn : list){
btn.setOnClickListener(this);
}
也许这将是有帮助的人,我想用一个计数器变量用于动态创建按钮组:
我创建了计数器阵列:
int[] squatReps;
从喜好我已经采取元素的数量:
squatReps = new int[squatSets]; // where squatSets is taken from preferences
最后我们创建的按钮
for (int i = 0; i < squatSets; i++){
squatReps[i] = Integer.parseInt(sharedPreferences.getString("squats_reps", "0"));
final Button squat_b = new Button(this.getActivity());
squat_b.setId(i);
squat_b.setText("");
squat_b.setLayoutParams(layoutParams);
final int index = i;
squat_b.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
squat_b.setText(Integer.toString(squatReps[index]--));
startTimer();
}
});
panel_1.addView(squat_b);
这是同一件事...
for(int i=0;i<nob;i++){
Button btn = new Button(this);
btn.setId(i+1);
btn.setText("Button"+(i+1));
btn.setLayoutParams(lprams);
btn.setOnCLickListsener(new listener());
dynamicview.addView(btn);
}
listener implemnets OnClickListenere{
public void onClick(View v){
}
}
for(int i=0;i<nob;i++){
Button btn = new Button(this);
btn.setId(i+1);
btn.setText("Button"+(i+1));
btn.setLayoutParams(lprams);
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
/////Do some job on button click
}
});
dynamicview.addView(btn);
}