Есть ли способ написать ту же функцию onclick для нескольких элементов управления? - PullRequest
0 голосов
/ 26 сентября 2018

Я столкнулся с проблемой, когда у меня есть несколько текстовых представлений, которые должны иметь одинаковую функцию onclick.Я, очевидно, могу написать несколько onclick, но я хочу оптимизированный код.

Например, у меня есть текстовые просмотры красного цвета и другие текстовые просмотры синего цвета, и я хочу, чтобы все красные имели одинаковый клик, а все синие - одинаковую функцию клик, отличную от красного.

Есть лиспособ достичь этого в Android Java?

Ответы [ 5 ]

0 голосов
/ 26 сентября 2018

Вы можете использовать этот самый простой способ:

Определите свой onClick в своем XML-файле для текстовых представлений красного типа и текстовых представлений синего типа, как этот.

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

А затем определите метод redTextViewMethodв вашем соответствующем файле Java, как это

private void redTextViewMethod() {
    //your code
}
private void blueTextViewMethod() {
    //your code
}
0 голосов
/ 26 сентября 2018
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;
               }
        }
0 голосов
/ 26 сентября 2018

Назначьте идентификатор для красного цвета и другой идентификатор для синего.И напишите инструкцию переключения, если, как показано ниже

switch (id)
      case 0:
        runAmethod();
        break;
      case 1:
        runAnotherMethod():
      break;
default:
0 голосов
/ 26 сентября 2018

Решение:

Сначала создайте общий публичный метод для получения 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"/>  
0 голосов
/ 26 сентября 2018

объявите событие клика в переменной типа 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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...