我在自定义TableRows的活动中使用了不同的TableLayouts。 设置TableLayout时,我为Button添加一个OnClick Listener,为整个TableRow添加一个:
tr.getButton().setOnClickListener(new Button.OnClickListener() {
public void onClick(View v) {
Log.d(null, "BTN CLICK");
}
});
tr.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
Log.d(null, "TR CLICK");
}
});
问题是,TableRow的监听器正在触发但不是按钮的监听器。
有什么想法吗?提前谢谢。
修改
好的一些细节......
TableRow构造函数:
public ItemTableRow(Context context, final Item item) {
super(context);
this.item = item;
LayoutParams params = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
params.setMargins(10, 0, 10, 0);
buttonRemoveItem = new ImageButton(context);
buttonRemoveItem.setBackgroundResource(R.drawable.remove);
buttonRemoveItem.setLayoutParams(params);
this.addView(buttonRemoveItem);
TextView nameTextView = new TextView(context);
nameTextView.setText(item.getName());
nameTextView.setTextSize((float) 22.0);
nameTextView.setLayoutParams(params);
this.addView(nameTextView);
}
吸气者:
public ImageButton getButtonRemoveItem() {
return buttonRemoveItem;
}
以及TableLayout填充内容的活动中的相关部分:
final ItemTableRow tr = new ItemTableRow(MeetingViewActivity.this, getMeeting().getSections().get(i));
tr.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT));
tr.getButtonRemoveItem().setOnClickListener(new ImageButton.OnClickListener() {
public void onClick(View v) {
Log.d("service", "BTN CLICK");
}
});
tr.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
Intent intent = new Intent(MeetingViewActivity.this, SectionViewActivity.class);
Bundle bundle = new Bundle();
bundle.putSerializable("item", tr.getItem());
intent.putExtras(bundle);
startActivityForResult(intent, 0);
}
});
tr.setPadding(40, 10, 0, 10);
tableSections.addView(tr);
}