2013-02-12 2 views
5

Ich muss eine 3-Level-ExpandableListView für Android implementieren. Ich habe es mit ExpListView als Kind einer anderen ExpListView gemacht. Die beiden erweiterbaren Listen werden bereits angezeigt und können auch erweitert werden. Aber es ist nur die zweite Ebene zu sehen, wenn ich auf die Gruppe der zweiten Ebene klicke, wechselt der Pfeil in den erweiterten Zustand, aber die Reihen der dritten Ebene sind nicht in der Lage zu sehen. Stellen Sie sich vor, die äußere ExpListView muss aktualisiert werden, um Platz für die Zeilen der dritten Ebene zu erhalten, und möglicherweise müssen auch die Zeilenzählungen neu berechnet werden.Android 3-Level-ExpandableListView zeigt nur Zeilen auf der dritten Ebene nicht

Bei ähnlichen Fragen zu stackoveflow gibt es höchstens nur Links zu einem Beispiel, welche Lösung ich nicht verstehe bzw. nicht an meine Implementierung anpassen kann.

Der Link ist dies: http://mylifewithandroid.blogspot.de/2011/02/3-level-expandable-lists.html

Gibt es eine einfachere Lösung oder kann jemand erklären, auf einfache Art und Weise. Der Code im obigen Link hat mir nicht geholfen.

Erklärung, was ich bisher getan habe: ich die BaseExpandableListAdapter auf der ExpandableListView festgelegt haben und in seiner getGroupView() Ich bin ein layoutInflater mit und ViewHolder schrieb, die eine Textview (Text als Teil 1) gilt für jede Reihe. In der getChildView() verwende ich eine weitere ExpandableListView in einem zweiten ViewHolder. Auf dieser ExpListView habe ich auch einen BaseExpandableListAdapter gesetzt und die getGroupView() und getChildView() auch für diesen Adapter implementiert. Erledigen Sie dies mit einem TextView wie für die Gruppe beschrieben (als Text der 2. Ebene) und für das hier auch Kind (als Text der 3. Ebene).

Wenn es nötig wäre, könnte ich morgen einen Code schreiben, müsste es hier erst vorbereiten. Aber ein gutes Tutorial würde mir auch helfen.

Vielen Dank.

Antwort

0

Versuchen Sie eine benutzerdefinierte expandableListView im getChildView mit()

class YourCustomExpandableListView extends ExpandableListView { 
    public YourCustomExpandableListView (Context context) { 
     super(context);  
    } 

    protected void onMeasure(int width, int height) { 
     /* 
     * Adjust height 
     */ 
     height = MeasureSpec.makeMeasureSpec(500, MeasureSpec.AT_MOST); 
     super.onMeasure(width, height); 
    } 
} 

Werfen Sie einen Blick here

auch eine komplette Lösung kann here

+0

Das Problem zu finden ist, den richtigen Wert von 'gefunden werden 500'. Ich habe sogar etwas Komplexes versucht (ohne Erfolg): 'TypedValue value = new TypedValue(); DisplayMetrics metrics = new DisplayMetrics(); context.getTheme(). ResolveAttribute (android.R.attr.listPreferredItemHeight, value, true); ((WindowManager)) (context.getSystemService (Kontext.WINDOW_SERVICE))) .getDefaultDisplay(). GetMetrics (Metriken); int ZelleHeight = (int) TypedValue.complexToDimension (value.data, metrics); int rootItemsChildrenCount = getChildrenCount (groupPosition); Rückgabe cellHeight * rootItemsChildrenCount; ' – Ich