如何从父级的OnClickListener获取子视图ID?

时间:2018-05-18 23:20:13

标签: java android xml onclicklistener

我有一个简单的LinearLayout,里面有多个按钮。

<LinearLayout android:id="@+id/parent">
   <Button android:id="@+id/child_1">
   <Button android:id="@+id/child_2">
   <Button android:id="@+id/child_3">
   ...
</LinearLayout>

我将OnClickListener设置为父LinearLayout,当我点击任何子按钮onClick方法被调用。我如何知道点击按钮的ID?

请注意。我不想将OnClickListener设置为每个Button或在xml布局中添加 onClick =“someMethod”

1 个答案:

答案 0 :(得分:0)

也许这会起作用

让您的活动实现View.OnClickListener接口

public class MyActivity extends Activity implements View.OnClickListener{
   @Override
   public void onCreate(Bundle savedInstanceState) {
      Button child1 = (Button) findViewById(R.id.child_1);
      child1.setOnClickListener(this);
      Button child2 = (Button) findViewById(R.id.child_2);
      child1.setOnClickListener(this);
  }
}

然后覆盖onClick方法

@Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.child_1:
                // do something when child 1 is clicked
              break;
            case R.id.child_2:
                // do something when child 2 is clicked
              break;
        }
}

如果您有许多按钮,那么我建议使用ListView / RecyclerView并根据位置处理一次点击