【发布时间】:2010-11-19 08:55:38
【问题描述】:
我有一个列表视图,每行有 2 个按钮。 我正在使用 cursoradpater 来填充列表。
我也在 newview() bindview() 上使用视图持有者模式。
我的问题是: 知道按钮的操作与列表项本身的操作不同,我应该将按钮的 clicklisteners 放在哪里? 我保留 onListItemClick 吗?
【问题讨论】:
标签: android listactivity
我有一个列表视图,每行有 2 个按钮。 我正在使用 cursoradpater 来填充列表。
我也在 newview() bindview() 上使用视图持有者模式。
我的问题是: 知道按钮的操作与列表项本身的操作不同,我应该将按钮的 clicklisteners 放在哪里? 我保留 onListItemClick 吗?
【问题讨论】:
标签: android listactivity
您不需要onListItemClick
您可以尝试在适配器中为每个按钮绑定一个事件
final Button button = (Button) findViewById(R.id.button_id);
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// Perform action on click
}
});
但这可能不适用于列表项,因此您需要一种新的方法,如button documentation 中所述。
但是,您可以使用 android:onClick 属性为 XML 布局中的按钮分配一个方法,而不是对 Activity 中的按钮应用 OnClickListener。例如:
<Button
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="@string/self_destruct"
android:onClick="selfDestruct" />
现在,当用户单击按钮时,Android 系统会调用 Activity 的 selfDestruct(View) 方法。为了使其工作,该方法必须是公共的并接受一个视图作为它的唯一参数。例如:
public void selfDestruct(View view) {
// Kabloey
}
传递给方法的 View 是对被点击的小部件的引用。
【讨论】:
setTag() 设置您需要的组合ID。您将通过getTag() 从传递的视图参数中读取