2010-08-23 4 views
1

В основном я пытаюсь воссоздать экран контакта по умолчанию, когда вы нажимаете на кнопку «+» другую строку номера телефона, добавленную в список.Как расширить ListView в качестве элемента списка?

Прямо сейчас у меня есть ImageView как кнопка «+», а ListView содержит список телефонных номеров. Проблема заключается в том, что ListView не расширяется, когда я добавляю больше элементов в список.

Я мог бы создать тот же вид с LinearLayout, но как я могу сохранить все эти цифры таким образом?

Ниже расположение элемента, который будет раздувать с пользовательским адаптером

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

Это ListView часть.

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

Это действительно сбивает с толку: S. Может ли кто-нибудь помочь мне, пожалуйста?

ответ

0

В итоге я создал свой собственный класс, расширяющий LinearLayout, и его размер пересчитывается каждый раз, когда элемент добавляется или удаляется. Я уверен, что код грязный и занимает много воспоминаний, но он работает пока.

1

Вы должны использовать ViewStub.

ViewStub является невидимым, нулевого размером вида, который может быть использован для лениво раздуть компоновки ресурсов во время выполнения. Когда вид ViewStub становится видимым или , когда вызывается функция inflate(), ресурс раздувается.

Here у вас есть какие-то учебники или вы можете клонировать android's git repo, чтобы проверить, как они это делали.

+0

Как вы можете добавить больше чем 1 Посмотреть на него с помощью ViewStub? Разве это не просто раздует другое представление с помощью ListView внутри? – RobGThai

1

Я создал класс анимации, который анимирует маржу до отрицательных значений, заставляя элемент исчезать.

анимация выглядит следующим образом:

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

У меня есть весь пример приложения для этой анимации на моем блоге: http://udinic.wordpress.com/2011/09/03/expanding-listview-items/

Смежные вопросы