是否可以为多个控件编写相同的onclick函数?

时间:2018-09-26 06:45:34

标签: android textview onclicklistener id

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

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

有没有一种方法可以在android java中实现?

5 个答案:

答案 0 :(得分:1)

View.OnClickListener类型的变量中声明您的click事件,然后将其分配给您的textview,如下所示:

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);

答案 1 :(得分:0)

为红色分配一个ID,为蓝色分配另一个。并编写一个switch语句,如下所示

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

答案 2 :(得分:0)

解决方案:

首先,创建通用的公共方法来获得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"/>  

答案 3 :(得分:0)

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 :(得分:0)

您可以使用这种最简单的方法:

在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
}