从自定义TableRow中的按钮接收活动中的OnClick事件

时间:2013-11-23 11:43:43

标签: android onclicklistener android-tablelayout

我在自定义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);
            }

0 个答案:

没有答案