【问题标题】:Is there a way to write a same onclick function for multiple controls?有没有办法为多个控件编写相同的 onclick 函数?
【发布时间】:2018-09-26 06:45:34
【问题描述】:

我遇到了一个问题,我有多个文本视图应该具有相同的 onclick 功能。我显然可以编写多个 onclick,但我想要一个优化的代码。

例如,我有红色的文本视图和蓝色的其他文本视图,我希望所有红色都具有相同的 onclick,而所有蓝色都具有与红色不同的相同 onclick 功能。

有没有办法在android java中实现这一点?

【问题讨论】:

标签: android textview onclicklistener


【解决方案1】:

View.OnClickListener 类型的变量中声明您的点击事件,然后将其分配给您的文本视图,如下所示:

View.OnClickListener eventVar = new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        //do what you need
    }
};

textview1.setOnClickListener(eventVar);
textview2.setOnClickListener(eventVar);
textview3.setOnClickListener(eventVar);
textview4.setOnClickListener(eventVar);

【讨论】:

    【解决方案2】:

    为红色分配一个 id,为蓝色分配另一个 id。并写一个switch语句,if如下

    switch (id)
          case 0:
            runAmethod();
            break;
          case 1:
            runAnotherMethod():
          break;
    default:
    

    【讨论】:

      【解决方案3】:
      Write a common function for your all the color textview like
      
              private void clickOfRedTextView(){
              // your code.
              }
      
      Now implement your activity or fragment with OnClickListener listener and pass the on click
          textviewred1.setOnClickListener(this);
          textviewred2.setOnClickListener(this);
          // so on ... 
      
      In the override method of onclick you can have a switch case with view id as follow.
              public void onClick(View v) {
                      switch (v.getId()) {
                          case R.id.textviewred1:
                          case R.id.textviewred2:
                          so on.... 
                          // your function you want to call will come here. 
                         clickOfRedTextView();
                        break;
                     }
              }
      

      【讨论】:

        【解决方案4】:

        你可以用这个最简单的方法:

        在你的 xml 文件中为你的红色文本视图和蓝色文本视图定义你的 onClick。

        <TextView
            //other attributes...
            android:onClick="redTextViewMethod"/>
        <TextView
            //other attributes...
            android:onClick="blueTextViewMethod"/>
        

        然后像这样在你对应的Java文件中定义redTextViewMethod方法

        private void redTextViewMethod() {
            //your code
        }
        private void blueTextViewMethod() {
            //your code
        }
        

        【讨论】:

          【解决方案5】:

          解决方案:

          首先,创建获取TextView点击的通用公共方法,

          public void onTextViewClick(View v) {
              switch (v.getId()) {
                  case R.id.VIEW_ID:
                  case R.id.VIEW_ID:
                  case R.id.VIEW_ID:
                      // Performs action for Blue Text View
                      break;
                  case R.id.VIEW_ID:
                  case R.id.VIEW_ID:
                      // Performs action for Red Text View
                      break;
              }
          }
          

          然后,在你的 xml 中像这样写TextView onClick

          <TextView
              ...
              android:onClick="onTextViewClick"/>  
          

          【讨论】:

            猜你喜欢
            • 2019-09-10
            • 1970-01-01
            • 1970-01-01
            • 2021-08-06
            • 1970-01-01
            • 2022-09-28
            • 2019-10-10
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多