Перепишите код, чтобы он был эффективным (кнопка увеличения текста)

У меня есть 5 editTexts и 2 кнопки для каждого editText, поэтому их 10. Каждый из них должен увеличивать/уменьшать определенный текст редактирования. Теперь мой код работает полностью, но, как вы скоро увидите, он неэффективен и даже не проверяет, чтобы числа находились в диапазоне от 0 до 59 (часы, которые можно установить на n минут) для editTexts, которые должны содержать минуты. . Во всяком случае, я просто хочу знать, как лучше или наиболее эффективно это сделать.

Моя идея заключалась в том, чтобы иметь отдельный метод, который принимает такие параметры, как конкретный editText для увеличения/уменьшения, и другой параметр для добавления или вычитания, но я не уверен в реализации, поскольку OnClickListener() должен иметь public void onClick( Вид v) метод.

Спасибо!

Код:

package com.clock;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;

public class addCourse extends Activity {

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.addcourse);

    final Button save_Button = (Button) findViewById(R.id.addSave);
    final Button cancel_Button = (Button) findViewById(R.id.addCancel);
    final Button higherNumber_Button = (Button) findViewById(R.id.higherNumber_Button);
    final Button lowerNumber_Button = (Button) findViewById(R.id.lowerNumber_Button);
    final Button higherClasshh_Button = (Button) findViewById(R.id.higherClasshh_Button);
    final Button lowerClasshh_Button = (Button) findViewById(R.id.lowerClasshh_Button);
    final Button higherClassmm_Button = (Button) findViewById(R.id.higherClassmm_Button);
    final Button lowerClassmm_Button = (Button) findViewById(R.id.lowerClassmm_Button);
    final Button higherClockhh_Button = (Button) findViewById(R.id.higherClockhh_Button);
    final Button lowerClockhh_Button = (Button) findViewById(R.id.lowerClockhh_Button);
    final Button higherClockmm_Button = (Button) findViewById(R.id.higherClockmm_Button);
    final Button lowerClockmm_Button = (Button) findViewById(R.id.lowerClockmm_Button);
    final EditText courseCredits_Edit = (EditText) findViewById(R.id.courseCredits_Edit);
    final EditText hhClass_Edit = (EditText) findViewById(R.id.classHours_Edit);
    final EditText mmClass_Edit = (EditText) findViewById(R.id.classMins_Edit);
    final EditText hhClock_Edit = (EditText) findViewById(R.id.clockHours_Edit);
    final EditText mmClock_Edit = (EditText) findViewById(R.id.clockMins_Edit);

    higherNumber_Button.setOnClickListener(new OnClickListener() {
        public void onClick(View v) {
            // Perform action on clicks
            int a = Integer.parseInt(courseCredits_Edit.getText().toString());
            ++a;
            courseCredits_Edit.setText(a + "");
        }
    });

    lowerNumber_Button.setOnClickListener(new OnClickListener() {
        public void onClick(View v) {
            // Perform action on clicks
            int a = Integer.parseInt(courseCredits_Edit.getText().toString());
            --a;
            courseCredits_Edit.setText(a + "");
        }
    });

    higherClasshh_Button.setOnClickListener(new OnClickListener() {
        public void onClick(View v) {
            // Perform action on clicks
            int a = Integer.parseInt(hhClass_Edit.getText().toString());
            ++a;
            hhClass_Edit.setText(a + "");
        }
    });

    lowerClasshh_Button.setOnClickListener(new OnClickListener() {
        public void onClick(View v) {
            // Perform action on clicks
            int a = Integer.parseInt(hhClass_Edit.getText().toString());
            --a;
            hhClass_Edit.setText(a + "");
        }
    });

    higherClassmm_Button.setOnClickListener(new OnClickListener() {
        public void onClick(View v) {
            // Perform action on clicks
            int a = Integer.parseInt(mmClass_Edit.getText().toString());
            ++a;
            mmClass_Edit.setText(a + "");
        }
    });

    lowerClassmm_Button.setOnClickListener(new OnClickListener() {
        public void onClick(View v) {
            // Perform action on clicks
            int a = Integer.parseInt(mmClass_Edit.getText().toString());
            --a;
            mmClass_Edit.setText(a + "");
        }
    });

    higherClockhh_Button.setOnClickListener(new OnClickListener() {
        public void onClick(View v) {
            // Perform action on clicks
            int a = Integer.parseInt(hhClock_Edit.getText().toString());
            ++a;
            hhClock_Edit.setText(a + "");
        }
    });

    lowerClockhh_Button.setOnClickListener(new OnClickListener() {
        public void onClick(View v) {
            // Perform action on clicks
            int a = Integer.parseInt(hhClock_Edit.getText().toString());
            --a;
            hhClock_Edit.setText(a + "");
        }
    });

    higherClockmm_Button.setOnClickListener(new OnClickListener() {
        public void onClick(View v) {
            // Perform action on clicks
            int a = Integer.parseInt(mmClock_Edit.getText().toString());
            ++a;
            mmClock_Edit.setText(a + "");
        }
    });

    lowerClockmm_Button.setOnClickListener(new OnClickListener() {
        public void onClick(View v) {
            // Perform action on clicks
            int a = Integer.parseInt(mmClock_Edit.getText().toString());
            --a;
            mmClock_Edit.setText(a + "");
        }
    });

    save_Button.setOnClickListener(new OnClickListener() {
        public void onClick(View v) {
            // Perform action on clicks

        }
    });

    cancel_Button.setOnClickListener(new OnClickListener() {
        public void onClick(View v) {
            // Perform action on clicks
            finish();
        }
    });
}

}`


person Pete Jodo    schedule 28.11.2011    source источник
comment
Тьфу, почему бы не реализовать в Activity OnClickListener? Затем в методе onClick с помощью оператора switch вместе с идентификатором тега либо a--, либо a++   -  person JPM    schedule 29.11.2011


Ответы (1)


1) используйте свойство «тег» каждой из ваших кнопок в макете xml.

http://developer.android.com/reference/android/view/View.html

Теги

В отличие от идентификаторов, теги не используются для идентификации представлений. Теги — это, по сути, дополнительная информация, которая может быть связана с представлением. Чаще всего они используются для удобства хранения данных, связанных с представлениями, в самих представлениях, а не путем помещения их в отдельную структуру.

2) используйте также onclick в вашем xml

 <Button
     android:layout_height="wrap_content"
     android:layout_width="wrap_content"
     android:tag="1"
     android:onClick="doSomething" />

в вашем коде:

public void doSomething(View v){
    int tag=v.getTag();
    //Do something smart with button, like odd numbers = plus and even = minus.
}

http://developer.android.com/reference/android/view/View.html#getTag()

Если вы хотите программно с помощью приведенного выше кода получить соответствующий текст редактирования, просто сохраните их идентификатор в массиве и поиграйте с int, чтобы получить соответствующий текст редактирования.

person Waza_Be    schedule 28.11.2011