Android 在include布局中单击侦听器

Android 在include布局中单击侦听器,android,xml,Android,Xml,我有一个布局,其中包含一个edittext和两个按钮,用于增加和减少edittext中的值。现在我正在使用include在我的活动中使用此按钮,因为我多次使用该按钮 例如:- 注意:-我使用绑定来实现这一点。editTextOne.btnPlus.setOnClickListener{Toast.makeText(这个“加号”,Toast.LENGTH_SHORT).show()和其他类似的,但我想要的是我可以编写加号和减号单击listener一次,然后它们更新只包含它们的edittext的值

我有一个布局,其中包含一个edittext和两个按钮,用于增加和减少edittext中的值。现在我正在使用
include
在我的
活动中使用此按钮,因为我多次使用该按钮

例如:-

注意:-我使用
绑定来实现这一点。editTextOne.btnPlus.setOnClickListener{Toast.makeText(这个“加号”,Toast.LENGTH_SHORT).show()
和其他类似的,但我想要的是我可以编写
加号
减号
单击listener一次,然后它们更新只包含它们的
edittext
的值


不确定这是否可能有更好的建议?

您可以获得这样的视图

    // First View
    val includedView1 = findViewById<ConstraintLayout>(R.id.editTextOne)

    val btnPlus1 = includedView1.findViewById<Button>(R.id.btnPlus)
    val btnMinus1 = includedView1.findViewById<Button>(R.id.btnMinus)

    // Second View
    val includedView2 = findViewById<ConstraintLayout>(R.id.editTextTwo)

    val btnPlus2 = includedView2.findViewById<Button>(R.id.btnPlus)
    val btnMinus2 = includedView2.findViewById<Button>(R.id.btnMinus)
//第一视图
val includedView1=findViewById(R.id.editTextOne)
val btnPlus1=includedView1.findViewById(R.id.btnPlus)
val btnMinus1=includedView1.findViewById(R.id.btnMinus)
//第二视图
val includedView2=findViewById(R.id.editTextTwo)
val btnPlus2=includedView2.findViewById(R.id.btnPlus)
val btnMinus2=includedView2.findViewById(R.id.btnMinus)

您可以获得这样的视图

    // First View
    val includedView1 = findViewById<ConstraintLayout>(R.id.editTextOne)

    val btnPlus1 = includedView1.findViewById<Button>(R.id.btnPlus)
    val btnMinus1 = includedView1.findViewById<Button>(R.id.btnMinus)

    // Second View
    val includedView2 = findViewById<ConstraintLayout>(R.id.editTextTwo)

    val btnPlus2 = includedView2.findViewById<Button>(R.id.btnPlus)
    val btnMinus2 = includedView2.findViewById<Button>(R.id.btnMinus)
//第一视图
val includedView1=findViewById(R.id.editTextOne)
val btnPlus1=includedView1.findViewById(R.id.btnPlus)
val btnMinus1=includedView1.findViewById(R.id.btnMinus)
//第二视图
val includedView2=findViewById(R.id.editTextTwo)
val btnPlus2=includedView2.findViewById(R.id.btnPlus)
val btnMinus2=includedView2.findViewById(R.id.btnMinus)

解决这个问题有一个解决方案。 首先,为每个include分配一个id

 <include
       android:id="@+id/inc1"
       layout="@layout/include_layout" 
        ...
  />


  <include
       android:id="@+id/inc2"
       layout="@layout/include_layout"
        ...
  />

有一个解决这个问题的办法。 首先,为每个include分配一个id

 <include
       android:id="@+id/inc1"
       layout="@layout/include_layout" 
        ...
  />


  <include
       android:id="@+id/inc2"
       layout="@layout/include_layout"
        ...
  />

能否与按钮布局文件共享include_edittext_?不要使用include Id在按钮上附加事件,使用按钮或布局ID附加onClickListener。@Ekrem已添加code@hafiza我已经使用了按钮id,这是导致问题的原因,因为我多次包含相同的布局,如果我单击第一个布局的加号按钮,那么它也会触发第二个布局加号按钮,因为它们与我在您的情况下所做的是创建一个函数它获取一个视图(您正在包含的特定视图),该视图将初始化它的功能。这样,每次单击按钮将只属于特定版面的相关子级,并将保存大量编码(除非您需要包含的每个版面的特定行为),您可以与按钮版面文件共享include_edittext_吗?不要使用include Id在按钮上附加事件,使用按钮或布局ID附加onClickListener。@Ekrem已添加code@hafiza我已经使用了按钮id,这是导致问题的原因,因为我多次包含相同的布局,如果我单击第一个布局的加号按钮,那么它也会触发第二个布局加号按钮,因为它们与我在您的情况下所做的是创建一个函数它获取一个视图(您正在包含的特定视图),该视图将初始化它的功能。这样,每次单击按钮将只属于特定版面的相关子级,并将保存大量编码(除非您需要包含的每个版面的特定行为)是的,我知道我可以使用它,但是如果我有四到五个edittext,那将需要很多代码,尽管两个按钮的用途是相同的,即更新他们自己布局中的edittext。也许你可以使用自定义视图。是的,我知道我可以使用它,但是如果我有四到五个edittext,那将需要很多代码,尽管两个按钮的用途是相同的,即更新他们自己布局中的edittext。也许你可以使用自定义视图。你好您的解决方案是完美的,而且效果良好。谢谢,你好。您的解决方案是完美的,而且效果良好。非常感谢。
 <androidx.appcompat.widget.AppCompatImageButton
    android:id="@+id/ib"
    android:onClick="onClick"
    ...
   />