2012-03-28 5 views
2

Ich benutze Objekte (Beans), die wir Kategorie nennen. Diese Category-Objekte enthalten eine Reihe von Attributen einschließlich einer Liste von Category-Objekten.Eine Aktivität, viele Inhalte

public class Category { 
    private List<Category> categoryList; 
    ... 
    private Strings anAttribute; 
} 

beim Übersetzen, ich weiß nicht, die Tiefe des Objekts Wurzel Kategorie, das heißt: wie viele Kategorie sind in der Liste der Root-Kategorie und wie viele Kategorie Objekte sind in jeder der Liste und so gehen auf. Ich bekomme das Root-Category-Objekt, indem ich eine XML-Datei analysiere.

Ich habe eine Aktivität, die, um fortzufahren, eine Reihe von Tasten zeigt. Jede Schaltfläche repräsentiert ein Stammobjekt der Kategorie (jeweils aus einer XML-Datei). Ich möchte, dass, sobald ich auf einen dieser Knöpfe klicke, ich ein neues "Fenster" bekomme, das eine Reihe von Knöpfen (eine Taste pro Kategorie in der Liste) zeigt und jeder dieser Knöpfe rekursiv ein neues "Fenster" zeigt, das eine Reihe von zeigt buttons ...

Wie könnte ich das wissen, ich würde gerne XML-Dateien für die Inhalte verwenden, die ich anzeigen möchte? Ich denke, es geht nicht darum, eine Aktivität pro Kategorie zu erstellen (auch nicht dynamisch).

Vielen Dank für Ihre Hilfe.

+0

kann eine javabean haben eine Liste von selbst? Wenn Sie nicht mehrere Aktivitäten erstellen möchten, können Sie einfach mehrere XML-Ansichten erstellen und diese aufblasen, wenn Sie sie benötigen. – Andreas

Antwort

3

Sie könnten die folgende Struktur verwenden:

private LinearLayout myLayout; 

protected void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.something); 

    myLayout = (LinearLayout) findViewById(R.id.my_layout); 
    createBtns(loadFirstCategory()); 
} 

private void createBtns(Category c) 
{ 
    List<Category> c_list = c.getCategoryList(); 
    for (int i=0; i<c_list.size(); i++) 
    { 
     Button btn = new Button(this); 
     btn.setText(c_list.get(i).getName()); 
     myLayout.addView(btn); 

     btn.setOnClickListener(new OnClickListener() { 
      public void onClick() 
      { 
       myLayout.removeAll(); 
       createBtns(c_list.get(i)); 
      } 
     }); 
    } 
} 
+0

Jede Schaltfläche in createBtns() kann auch eine Absicht für dieselbe Aktivität mit intent.setExtra (c) auslösen. ; Daher erhält die Aktivität die aktuell angezeigte Kategorie als Argument. Dadurch kann die Rücktaste ordnungsgemäß funktionieren. – damaxxed

Verwandte Themen