简体   繁体   English

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

[英]How do I get child view id from parent's OnClickListener?

I have a simple LinearLayout with multiply Buttons inside. 我有一个简单的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>

I set OnClickListener to parent LinearLayout and when I click on any child Buttons onClick method is called. 我将OnClickListener设置为父级LinearLayout,然后在单击任何子Button时调用onClick方法。 How I can know id of clicked Button? 我如何知道单击按钮的ID?

Note. 注意。 I don't want to set OnClickListener to each Button or add onClick="someMethod" in xml layout. 我不想为每个Button设置OnClickListener或在xml布局中添加onClick =“ someMethod”

maybe this will work 也许这会工作

make your activity implement View.OnClickListener interface 使您的活动实现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);
  }
}

and then override onClick method 然后覆盖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;
        }
}

If you have many buttons then I would suggest a ListView/ RecyclerView and handle the click once based on the position 如果您有很多按钮,那么我建议您使用ListView / RecyclerView并根据位置处理一次单击

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM