/ / Ako rozšíriť ListView ako naplniť položku zoznamu? - Android

Ako rozšíriť ListView ako položka zoznamu populácie? - Android

V podstate sa snažím obnoviť predvolenú kontaktnú obrazovku, keď kliknete na tlačidlo „+“ ďalší riadok telefónneho čísla pridaného do zoznamu.

Práve teraz mám ImageView ako tlačidlo „+“ a ListView, ktorý obsahuje zoznam telefónnych čísel. Problém je, že ListView sa nerozbalí, keď do zoznamu pridám ďalšiu položku.

S LinearLayout by som mohol vytvoriť rovnaký vzhľad, ale ako môžem týmto spôsobom uložiť všetky tieto čísla?

Nižšie je rozloženie položky, ktoré bude nafúknuté vlastným adaptérom

<?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>

Toto je časť ListView.

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

To je skutočne mätúce: S. Môže mi niekto pomôcť, prosím?

odpovede:

1 pre odpoveď č. 1

Mali by ste použiť a ViewStub.

ViewStub je neviditeľný, nulový Pozrite si tomôžu byť použité lenivo nafúknuť zdroje rozloženia za behu. Keď je ViewStub zviditeľnený, alebo po vyvolaní inflácie () rozloženie zdroj je nafúknutý.

Tu máte nejaké návody alebo môžete naklonovať git repo pre Android skontrolovať, ako to urobili.


1 pre odpoveď č. 2

Postavil som triedu Animation, ktorá animuje okraj na záporné hodnoty, takže položka zmizne.

Animácia vyzerá takto:

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();
}
}
}

Na svojom blogovom príspevku mám celú ukážkovú aplikáciu pre túto animáciu: http://udinic.wordpress.com/2011/09/03/expanding-listview-items/


0 pre odpoveď č. 3

Nakoniec som vytvoril svoju vlastnú triedu rozširujúcu LinearLayout a jej veľkosť sa prepočítavala pri každom pridaní alebo odstránení položky. Som si istý, že kód je špinavý a zaberá veľa spomienok, ale teraz to funguje.