Перепишите код, чтобы быть эффективным (кнопка инкремент текстового представления)
У меня есть 5 editTexts и 2 кнопки для каждого editText, так что 10 из них. Предполагается, что каждый из них увеличивает/уменьшает определенный редактируемый текст. Теперь мой код работает полностью, но, как вы скоро увидите, он не эффективен и даже не гарантирует, что числа находятся между 0-59 (часы, которые можно установить на n минут) для editTexts, которые должны содержать минуты. В любом случае, я просто хочу знать, как лучше или эффективнее всего это сделать.
Моя идея состояла в том, чтобы иметь отдельный метод, который принимает такие параметры, как конкретный editText для увеличения/уменьшения и другой параметр для добавления или вычитания, но я не уверен в реализации, так как OnClickListener () должен иметь метод public void onClick(View 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();
}
});
}
}`
1 ответ:
1) используйте свойство " tag " каждой кнопки в вашем 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()
Если вы хотите программно, с помощью кода выше, получить соответствующий edittext, просто сохраните их ID в arraylist и играйте с int, чтобы получить соответствующий EditText.