Android ListView with a Footer Form Android ListView with a Footer Form

During the creation of my first Android application Behavior Therapy Tracker I wanted to display a list of behaviors to manage; more importantly though, I wanted an easy way for users to add new behaviors to the list.

My solution to this problem was simple, add a one-liner form to the footer of my ListView that contained the behaviors.


I accomplished this by using the following XML layout:


<RelativeLayout xmlns:android=http://schemas.android.com/apk/res/android
    xmlns:tools=http://schemas.android.com/tools
    android:id="@+id/type_summary"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal">
    <LinearLayout
        android:id="@+id/type_footer"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:layout_alignParentBottom="true">
        <EditText
            android:id="@+id/behavior"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:hint="@string/message_behavior"
            android:singleLine="true" />
        <ImageButton
            android:id="@+id/add"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@android:drawable/ic_menu_add"
            android:contentDescription="@string/button_add" />
    </LinearLayout>
    <ListView
        android:id="@android:id/list"
        android:layout_width="match_parent"
        android:layout_height="fill_parent"
        android:text=""
        android:layout_above="@id/type_footer" />
</RelativeLayout>

The above layout contains a relative layout with an inner linear layout and a ListView element.

The LinearLayout contains my form. The key pieces that allow this to work are the layout_alignParentBottom. Inside this LinearLayout I have a simple EditText for form input and an ImageButton for adding a new behavior. The height of the LinearLayout is set to wrap_content to ensure it only takes up as much height as required.

Outside of this LinearLayout contains my ListView that is populated by my activity. The ListView has two important properties set. Unlike the height of my LinearLayout, the ListView is set to fill_parent; meaning take up whatever space is left. The other important setting is the layout_above is set to be above the type_footer (my LinearLayout id).

Published on Sep 26, 2013

Tags: android | Android | Java | listview

Related Posts

Did you enjoy this article? If you did here are some more articles that I thought you will enjoy as they are very similar to the article that you just finished reading.

Tutorials

Learn how to code in HTML, CSS, JavaScript, Python, Ruby, PHP, Java, C#, SQL, and more.

No matter the programming language you're looking to learn, I've hopefully compiled an incredible set of tutorials for you to learn; whether you are beginner or an expert, there is something for everyone to learn. Each topic I go in-depth and provide many examples throughout. I can't wait for you to dig in and improve your skillset with any of the tutorials below.