Android 动态添加Button,点击事件不管用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android 动态添加Button,点击事件不管用相关的知识,希望对你有一定的参考价值。

项目是从服务器上取分类,有几个分类就相应的有多少个按钮,但是我动态添加按钮后,按钮的点击事件不管用
动态添加按钮的代码
private LinearLayout ll_menu_list;

LayoutParams params = new LayoutParams(LayoutParams.FILL_PARENT,
LayoutParams.WRAP_CONTENT);
ll_menu_list.removeAllViews();
for (int i = 0; i < Constant.categories.size(); i++)
button = new Button(ListActivity.this);
button.setText(Constant.categories.get(i).getName());
button.setMinHeight(35);
button.setMinWidth(120);
button.setPadding(20, 5, 20, 5);
ll_menu_list.addView(button, i, params);
buttons.add(button);

按钮的点击事件:
for (int i = 0; i < Constant.categories.size(); i++)
button.setOnClickListener(new Button.OnClickListener()
public void onClick(View v)
int i = (Integer) v.getTag();
System.out.println("i = " + i);

);

xml布局文件:
<HorizontalScrollView
android:id="@+id/hs_list_menu"
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginLeft="15dip"
android:layout_marginRight="15dip"
android:layout_weight="1"
android:scrollbars="none" >
<LinearLayout
android:id="@+id/ll_menu_list"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal" >
</LinearLayout>
</HorizontalScrollView>

参考技术A 因为按钮事件是submit,当点击后会回发事件,然后再经过Page_Load事件,一刷新,啥都没了追问

额,您这是说网站上的按钮?

jquery事件绑定

一、静态绑定事件

如:在执行完bind()方法给所有button添加点击事件的操作后,又往页面动态添加了button元素,那么后来添加的button并没有前面添加的点击事件。

1.bind()方法 —— 静态绑定事件

jQuery 3.0中已弃用此方法,使用 on()方法代替。

$(selector).bind(events,[data],fn)

events: 含有一个或多个事件类型的字符串,由“空格”分隔多个事件。比如"click"或"submit",还可以是自定义事件名。

data:作为event.data属性值传递给事件对象的额外数据对象(可省略)。

fn:绑定到每个匹配元素的事件上面的处理函数。

代码示例:

绑定多个事件但是操作一样,事件中间使用“空格”分隔。

$("form").bind("submit click", function(event)
    // 对应操作
);

绑定多个事件且操作不同,使用json。

$("form").bind(
    click:function(),
    mouseover:function()
);

 

2.unbind()方法 —— 解除事件绑定

$(selector).unbind():解除所有事件

$(selector).unbind(type):解除特定事件

$(selector).unbind(type,handler):解除特定事件特定方法

type:时间类型字符串

handler:想要接触的方法

代码示例:

// 绑定事件
var
fn1 = function() var fn2 = function() var fn3 = function() $("form").bind( click:fn1, click:fn2, click:fn3 );
// 解除绑定
$("form").unbind("click",fn2);

结果:方法fn2被解除绑定,其他两个方法还在。

二、动态绑定事件

1.on()方法 —— 动态绑定事件

如:在执行完on()方法给所有button添加点击事件的操作后,又往页面动态添加了button元素,那么后来添加的button也有前面添加的点击事件。

$(selector).on(events,selector,data,fn);

events: 含有一个或多个事件类型的字符串,由“空格”分隔多个事件。比如"click"或"submit",还可以是自定义事件名。

selector:一个选择器字符串,用于过滤触发事件的所选元素的后代。

data:作为event.data属性值传递给事件对象的额外数据对象(可省略)。

fn:绑定到每个匹配元素的事件上面的处理函数。

$(document).on("click",":button",function());

2.off()方法 —— 动态解绑事件

$(selector).off():解绑所有事件

$(selector).off(events):解绑特定事件(选择器由绑定时是否有决定)

$(selector).off(events,selector):解绑特定事件(选择器由绑定时是否有决定)

$(selector).off(events,selector,handler):解绑特定事件的特定方法

以上是关于Android 动态添加Button,点击事件不管用的主要内容,如果未能解决你的问题,请参考以下文章

Android中Button四种点击事件实现方式

java Jtable 如何动态添加button按钮

AARDIO 动态添加控件

js动态生成的button添加onclick事件 代码如下 想要实现的效果是勾选食物后生成 米饭+1- 点击加号值加1

jquery里怎么添加点击事件?

Android Studio学习随笔-基本事件(点击)