/ / Comment développer ListView en tant qu'élément de liste peuplé? - Android

Comment développer ListView en tant qu'élément de liste peuplé? - Android

Fondamentalement, j'essaie de recréer l'écran de contact par défaut lorsque vous cliquez sur le bouton "+", une autre ligne du numéro de téléphone ajouté à la liste.

À l'heure actuelle, j'ai un ImageView comme bouton "+" et un ListView pour contenir la liste des numéros de téléphone. Le problème est que ListView ne se développe pas lorsque j’ajoute d’autres éléments à la liste.

Je pourrais construire le même look avec LinearLayout, mais comment puis-je sauvegarder tous ces chiffres de cette manière?

Vous trouverez ci-dessous la disposition de l'article à gonfler avec un adaptateur personnalisé.

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

Ceci est la partie ListView.

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

C'est vraiment déroutant: S. Quelqu'un pourrait-il m'aider, s'il vous plaît?

Réponses:

1 pour la réponse № 1

Vous devriez utiliser un ViewStub.

Un ViewStub est un invisible, de taille zéro Voir quepeut être utilisé paresseusement gonfler les ressources de présentation au moment de l'exécution. Quand un ViewStub est rendu visible, ou Quand inflate () est appelé, la mise en page la ressource est gonflée.

Ici vous avez des tutoriels ou vous pouvez cloner le android "s git repo pour vérifier comment ils l'ont fait.


1 pour la réponse № 2

J’ai construit une classe d’animation qui anime la marge en valeurs négatives, faisant disparaître l’élément.

L'animation ressemble à ceci:

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

J'ai un exemple d'application complet pour cette animation sur mon blog: http://udinic.wordpress.com/2011/09/03/expanding-listview-items/


0 pour la réponse № 3

J'ai fini par créer ma propre classe, en étendant LinearLayout. Sa taille est recalculée chaque fois qu'un élément est ajouté ou supprimé. Je suis sûr que le code est sale et prend beaucoup de souvenirs, mais cela fonctionne pour le moment.