【问题标题】:Dynamic Add Buttons in LinearLayout, Button click event IssueLinearLayout中动态添加按钮,按钮点击事件问题
【发布时间】:2012-09-14 09:20:15
【问题描述】:

我开发了一个使用HorizontalScrollView 的Android 应用程序,而HorizontalScrollView 有一个孩子作为LinearLayout

现在我想在运行时动态地在LinearLayout 上添加按钮。

我添加按钮成功,但问题是我的按钮点击事件在Android中不起作用。

ArrayList listClassItems = objCompany.getListClassItems();

        Button[] btnCategory = new Button[listClassItems.size()];

        for(int i=0;i<listClassItems.size();i++)
        {
            System.out.println("OTHER_CLASS LENGTH : " + listClassItems.size()); 
            System.out.println("CLASS ID : " + listClassItems.get(i).getClassId());
            System.out.println("CLASS NAME : " + listClassItems.get(i).getClassName());

            btnCategory[i] = new Button(myContext); 
            btnCategory[i].setId(i);
            btnCategory[i].setTag(listClassItems.get(i).getClassId());
            btnCategory[i].setText(listClassItems.get(i).getClassName());
            btnCategory[i].setClickable(true);


            btnCategory[i].setPadding(10,10,10,10);

LayoutParams layoutParams = new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);

            if(i!=0 || i!=listClassItems.size()-1)
            {
                layParams.leftMargin = 10;
                layParams.rightMargin = 10;
            }


            tabRowBottom.addView(btnCategory,layParams);

            btnCategory[i].setOnClickListener(null);

            tabRowBottom.addView(btnCategory[i]);



            btnCategory[i].setOnClickListener(new Button.OnClickListener() 
            {   
                public void onClick(View v) 
                {
                    Toast.makeText(myContext, "=== Button CLICKED ===",Toast.LENGTH_SHORT).show();
                    btnCategory.setBackgroundColor(Color.BLACK);
                }
            });
        }

【问题讨论】:

  • 贴出sn-p,出现问题的地方..
  • 请注意对您的帖子进行的格式改进。您可以通过单击“编辑”查看用于改进帖子的标记。供将来参考,格式化帮助可以在here找到。

标签: android button dynamic android-linearlayout horizontalscrollview


【解决方案1】:

创建按钮列表而不是数组,您可以创建按钮并像这样设置它们的 id、标签和 onclicklisteners 并将它们添加到按钮列表中:

 buttonList = new ArrayList<Button>();

    for (int i=0;i<5;i++){
        Button button = new Button(getApplicationContext());
        button.setOnClickListener(customListenner);
        button.setId(i);
        button.setTag(i);
        myLayout.addView(button);
        buttonList.add(button);
    }

当您需要再次使用该按钮时,只需使用列表中的 id 或标签调用即可。

如果你需要不同的监听器,你可以通过 if 函数中使用唯一标签检查并声明另一个动作来控制它们。

这是我以编程方式创建动态视图时经常使用的方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-09
    相关资源
    最近更新 更多