有没有办法让这段代码更简单?似乎在重复 该代码用于两个ImageViews交换和更改外观onClick,同时更改一些标签。 谢谢!
public void imgChangeUnit(View v) {
TextView lbl_unT = (TextView) findViewById(R.id.unT);
TextView lbl_unOD = (TextView) findViewById(R.id.unOD);
TextView lbl_unID = (TextView) findViewById(R.id.unID);
TextView lbl_unit_res = (TextView) findViewById(R.id.lbl_unit_res);
ImageView myImg_mm = (ImageView)findViewById(R.id.imgMetric);
ImageView myImg_in = (ImageView)findViewById(R.id.imgImperial);
if (isUnit(lbl_unit_res)) {
lbl_unT.setText("inch");
lbl_unOD.setText("inch");
lbl_unID.setText("inch");
lbl_unit_res.setText("Feet");
myImg_in.setImageDrawable(getResources().getDrawable(R.drawable.img_but_imperial_on));
myImg_mm.setImageDrawable(getResources().getDrawable(R.drawable.img_but_metric_off));
} else {
lbl_unT.setText("mm");
lbl_unOD.setText("mm");
lbl_unID.setText("mm");
lbl_unit_res.setText("Meters");
myImg_mm.setImageDrawable(getResources().getDrawable(R.drawable.img_but_metric_on));
myImg_in.setImageDrawable(getResources().getDrawable(R.drawable.img_but_imperial_off));
}
}
答案 0 :(得分:0)
这看起来好一点了。 至少你不再有可变的重复。
您可能想要创建类似setToImperial()和setToMetric()的方法,它们将知道要获取和设置的内容。 它甚至会更好。
另外,请注意,您不应该在Android中对Strings进行硬编码,而是使用string resources file。
public void imgChangeUnit(View v) {
TextView lbl_unT = (TextView) findViewById(R.id.unT);
TextView lbl_unOD = (TextView) findViewById(R.id.unOD);
TextView lbl_unID = (TextView) findViewById(R.id.unID);
TextView lbl_unit_res = (TextView) findViewById(R.id.lbl_unit_res);
ImageView myImg_mm = (ImageView)findViewById(R.id.imgMetric);
ImageView myImg_in = (ImageView)findViewById(R.id.imgImperial);
String unit;
String unit2;
Drawable d1;
Drawable d2;
if (isUnit(lbl_unit_res)) {
unit = "inch";
unit2 = "Feet";
d1 = getResources().getDrawable(R.drawable.img_but_imperial_on);
d2 = getResources().getDrawable(R.drawable.img_but_metric_off);
}
else {
unit = "mm";
unit2 = "Meters";
d1 = getResources().getDrawable(R.drawable.img_but_metric_on);
d2 = getResources().getDrawable(R.drawable.img_but_imperial_off);
}
lbl_unT.setText(unit);
lbl_unOD.setText(unit);
lbl_unID.setText(unit);
lbl_unit_res.setText(unit2);
myImg_mm.setImageDrawable(d1);
myImg_in.setImageDrawable(d2);
}