/ / Wie kann ich ListView als Listenelement erweitern? - Android

Wie erweitert man ListView als Listeneintrag? - Android

Grundsätzlich versuche ich, den Standard-Kontaktbildschirm neu zu erstellen, wenn Sie auf die Schaltfläche "+" klicken, um eine weitere Zeile der Telefonnummer der Liste hinzuzufügen.

Im Moment habe ich eine ImageView als "+" - Taste und eine ListView, um die Liste der Telefonnummern zu enthalten. Das Problem ist, dass die ListView nicht erweitert wird, wenn ich der Liste mehr Element hinzufüge.

Ich könnte den gleichen Look mit LinearLayout erstellen, aber wie kann ich all diese Zahlen auf diese Weise speichern?

Unten ist das Layout des Artikels, das mit einem benutzerdefinierten Adapter aufgeblasen wird

<?xml version="1.0" encoding="utf-8"?>
<TableLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="60px"
android:stretchColumns="1"
android:background="#FFFFFFFF"
android:gravity="center_vertical">
<TableRow>
<Button
android:id="@+id/type"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingLeft="10dp"
android:text="Home" />
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:paddingLeft="10dp"
android:paddingRight="10dp"
>
<EditText
android:id="@+id/value"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:text=""
android:hint="Name"
android:lines="1"
android:textSize="10pt"
android:typeface="sans"
android:textColor="#FF000000"
android:gravity="left"
/>
</RelativeLayout>
<ImageView
android:id="@+id/del"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:paddingRight="14dp"
android:src="@android:drawable/ic_delete" />
</TableRow>
</TableLayout>

Dies ist der ListView-Teil.

<ListView
android:id="@+id/phoneList"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="#FFFFFFFF"
android:scrollbars="none" />

Das ist wirklich verwirrend: S. Könnte mir bitte jemand helfen?

Antworten:

1 für die Antwort № 1

Sie sollten ein verwenden ViewStub.

Ein ViewStub ist unsichtbar und hat keine Größe Sehen Sie sich das ankann zu faul benutzt werden Layout-Ressourcen zur Laufzeit aufblasen. Wenn ein ViewStub sichtbar gemacht wird, oder Wenn inflate () aufgerufen wird, das Layout Ressource ist aufgeblasen.

Hier Sie haben einige Tutorials oder Sie können das kopieren Android-Git Repo um zu überprüfen, wie sie es getan haben.


1 für die Antwort № 2

Ich habe eine Animationsklasse erstellt, die den Rand zu negativen Werten animiert und das Element verschwinden lässt.

Die Animation sieht so aus:

public class ExpandAnimation extends Animation {
@Override
protected void applyTransformation(float interpolatedTime, Transformation t) {
super.applyTransformation(interpolatedTime, t);

if (interpolatedTime < 1.0f) {

// Calculating the new bottom margin, and setting it
mViewLayoutParams.bottomMargin = mMarginStart
+ (int) ((mMarginEnd - mMarginStart) * interpolatedTime);

// Invalidating the layout, making us seeing the changes we made
mAnimatedView.requestLayout();
}
}
}

Ich habe eine vollständige Beispiel-App für diese Animation in meinem Blogpost: http://udinic.wordpress.com/2011/09/03/expanding-listview-items/


0 für die Antwort № 3

Am Ende habe ich eine eigene Klasse erstellt, die LinearLayout erweitert und deren Größe jedes Mal neu berechnet, wenn Elemente hinzugefügt oder entfernt werden. Ich bin mir sicher, dass der Code schmutzig ist und viele Erinnerungen in Anspruch nimmt, aber jetzt funktioniert es.