Android: die Schleife durch einen string-array, mit Hilfe der Logik für Vorsatz-Methode

Ich bin ein java Anfänger, und ich habe mit dem code unten, um eine Liste mit anklickbaren TextViews, dass eine bestimmte Klasse, wenn Sie angeklickt werden.

Es ist eine Liste von Fußball-team-Namen.

ZB.

Arsenal
Manchester United
Chelsea

Klick auf TextView-Arsenal (TextView id = ars) rufen ars.class
Klick auf TextView-Chelsea (TextView id = che)nennen wird che.class

Ich habe über 20-Fußball-team-Namen.

Ich habe ein array von textview-ids, die ich in einer Schleife durch, und ordnen Sie eine Klick-Aktion. Dies funktioniert sehr gut.

Ich habe ein string-array von teamnames, der code durchläuft den string-array und weist jedem Teamnamen auf ein Class-Objekt, das verwendet wird, in der Absicht, () - Methode.

Wenn ich diesen code ausführen, wird die Liste produziert, aber wenn ich auf ein team Namen, es öffnet sich immer Wol.java die Letzte position in dem string-array.

Brauche ich etwas Hilfe mit der Logik, so dass, wenn ich auf Arsenal es öffnet ars.class

Hier ist der code.

public final int[] teams = { R.id.ars, R.id.ast, R.id.bir, R.id.bla,
        R.id.blp, R.id.bol, R.id.che, R.id.eve, R.id.ful, R.id.hul,
        R.id.lee, R.id.liv, R.id.mid, R.id.mnc, R.id.mnu, R.id.nor,
        R.id.nwu, R.id.por, R.id.qpr, R.id.sto, R.id.sun, R.id.swa,
        R.id.tot, R.id.wes, R.id.wig, R.id.wol };

     //String array of teamnames, named to correspond their class name.
public final String[] teamnames = { "ars", "ast", "bir", "bla", "blp",
        "bol", "che", "eve", "ful", "hul", "lee", "liv", "mid", "mnc",
        "mnu", "nor", "nwu", "por", "qpr", "sto", "sun", "swa", "tot",
        "wes", "wig", "wol" };

TextView tv;
Class classname;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.m_transfers);

    setTeamNames(); //Method sets up team names to a Class name.

    for (int i = 0; i < teams.length; i++) {
        tv = (TextView) findViewById(teams[i]);
        tv.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                Intent open = new Intent(Transfers.this, classname);
                startActivity(open);
            }
        });
    }
    ;
}

public void setTeamNames() {
    for (String s : teamnames) {
        String name = "ttj.android.ft.teams." + s;

        try {
            classname = Class.forName(name);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }
    ;
}
  • Sind Sie ernsthaft sagen, die Sie geschaffen haben 20 verschiedene Aktivitäten, eine für jedes team? Warum nicht einfach eine Activity (genannt TeamActivity zum Beispiel), und übergeben Sie die team-Namen als string Extra im Intent verwenden Sie für startActivity(...)?
  • Sehr neu in android Entwicklung, noch immer in meinen Kopf Manifestiert. Ja habe ich 20 getrennte Aktivitäten im manifest. Könnte ich ein TeamActivity im manifest?
  • Sie könnten sich einen TeamActivity im manifest der gleichen Weise, wie Sie aus den 20 verschiedenen Aktivitäten und dann, als MisterSquonk gesagt, nur fügen Sie einen string oder int in der Absicht, zu unterscheiden.
  • Danke Jungs, ich gebe diese ein zu gehen. Wenn Sie sagen, die Absicht, beziehen Sie sich auf Intent-filter in der xml-Datei oder in der Absicht, die Methode in java? Entschuldigung für die noobie Fragen!
  • Siehe meine Antwort. Nein, Sie müssen nicht ein <intent-filter> im manifest für TeamActivity weil Sie erstellen eine explizite Intent Angabe TeamActivity.class - kein Vorsatz-filter benötigt.
InformationsquelleAutor tiptopjat | 2012-05-15
Schreibe einen Kommentar