我有这个开关/案例结构:
public void onClick(View arg0) {
// TODO Auto-generated method stub
switch(arg0.getId()){
case R.id.save:
if (et.getText() !=null && thumbnail != null){
TableRow tr = new TableRow(this);
ImageView view = new ImageView(this);
TextView view2 = new TextView(this);
Button view3 = new Button(this);
view3.setOnClickListener(this);
titulo = new String[500];
mensaje = new String[500];
fotos = new Bitmap[500];
view3.setId(i);
view.setImageBitmap(thumbnail);
view.setPadding(1, 5, 0, 0);
view.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
Calendar c = Calendar.getInstance();
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd");
titulo[i]=""+et.getText();
mensaje[i]=""+et1.getText();
fotos[i]=thumbnail;
i++;
view2.setText("" + et.getText() + dateFormat.format(c.getTime()) );
view2.setGravity(Gravity.CENTER_HORIZONTAL);
view2.setGravity(Gravity.CENTER_VERTICAL);
view3.setGravity(Gravity.RIGHT);
view3.setGravity(Gravity.CENTER_VERTICAL);
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
tr.addView(view, metrics.widthPixels/3, 150);
tr.addView(view2, metrics.widthPixels/2, 100);
tr.addView(view3, metrics.widthPixels/6, 20);
tl.addView (tr, 0);
final Toast toastMensaje = Toast.makeText(getApplicationContext(),
"Tu entrada se cargó correctamente", Toast.LENGTH_LONG);
toastMensaje.setGravity(Gravity.CENTER, 0, 0);
toastMensaje.show();
et.setText("");
et1.setText("");
i1.setVisibility(View.GONE);
}
else{
final Toast toastMensaje = Toast.makeText(getApplicationContext(),
"Tienes que añadir un título y una foto", Toast.LENGTH_LONG);
toastMensaje.setGravity(Gravity.CENTER, 0, 0);
toastMensaje.show();
}
break;
case R.id.photo:
Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(cameraIntent, CAMERA_PIC_REQUEST);
break;
case R.id.gallery:
Intent intent = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(intent, TFRequestCodes);
break;
case 0:
final Toast toastMensaje = Toast.makeText(getApplicationContext(),
titulo[0], Toast.LENGTH_LONG);
toastMensaje.setGravity(Gravity.CENTER, 0, 0);
toastMensaje.show();
break;
}
}
它工作得很好,但我必须重复代码,从0到一个取决于数组长度的数字。
有没有办法减少所有的代码?
也许是for循环,我试过了,但我做不到。
感谢
您可以将case 0
和以下内容替换为:
default:
if (arg0.getId() < titulo.lenth) {
final Toast toastMensaje = getToast(arg0.getId());
toastMensaje.setGravity(Gravity.CENTER, 0, 0);
toastMensaje.show();
} else {
//not a valid value
}
break;
}
private Toast getToast(int i) {
return Toast.makeText(getApplicationContext(), titulo[i], Toast.LENGTH_LONG);
}