android - 在 Android 中为动态创建的按钮实现 OnClickListener

标签 android android-layout android-widget

我通过代码而不是 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 字段(例如 OnClickListener)。

关于android - 在 Android 中为动态创建的按钮实现 OnClickListener,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10673628/

相关文章:

android - 如何在 Google Drive SDK v2 中定义文件条目是文件还是文件夹?

android - 如何使用phonegap在状态栏中显示android的推送通知?

android - 如何在 RelativeLayout 或屏幕外稍微显示一个 ImageView?如何在屏幕左上角显示一个橡皮

android - 如何在android中制作椭圆形按钮?

Android Froyo WebView 不垂直滚动

android - 添加安卓 :widgetCategory ="keyguard|home_screen" while still supporting older sdk

android - MediaRecorder 类设置音频源的问题 - setAudioSource() - 不支持的参数

android - 如何在我的应用程序中编辑通过相机拍摄的照片?

java - 为什么 Android Studio 总是在应用程序设计中显示 ActionBar,即使在禁用时也是如此?

android - 使用 loadLabel(android.content.pm.PackageManager) 为 Android Widget 设置标签的示例