Android Switch/case

Habe ich dieses "switch/case" Struktur:

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;





    }

}

Funktioniert es einwandfrei, aber ich habe zu wiederholen, den code für eine lange Anzahl von zahlen von 0 bis zu einer Zahl, die abhängig von einem array.Länge

Gibt es eine Möglichkeit zu reduzieren, dass alle code?

Vielleicht eine for-Schleife, ich habe es versucht, aber ich kann nicht damit es funktioniert.

Dank

Du meinst den switch Fällen sind zu viele?
Ja, Sie sind zu viele, und Sie haben zu tun ist "fast" das gleiche. Es ändert sich nur der text, der geladen werden soll, in jedem Fall. So wird der code der gleiche sein, nur die änderung de index eines Arrays
Auch wenn u verwenden Sie for-Schleifen u müssen dieselbe Anzahl von IF-Bedingungen.
statt zu schreiben gemeinsame onclick-Methode, die Sie schreiben können einzelnen onclick-listener für jede Komponente
if (id=1 || id=2 || id=3 || id=4.........|| id=n) -->StartActivity (Wobei n eine int-variable), Was sich ändern wird sind die extras, die ich habe, zu stellen. Die buttons werden dynamisch erstellt.

InformationsquelleAutor Aldridge1991 | 2012-08-31

Schreibe einen Kommentar