Casper
Casper

Reputation: 373

Listview below listview android

I want to have a listview containing some content. And below it, when you scroll to the buttom of the listview, a new header would be displayed followed with a new list view. Is is possible?

//Edit The two listview need to have differet layout xml.

Have tried to put the second listview in a the footview of the first. But then the second listview is to small.

Here is my layout

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent" android:layout_height="fill_parent">

        <LinearLayout android:id="@+id/header"
            android:background="@drawable/app_topbar" android:layout_width="fill_parent"
            android:orientation="horizontal" android:layout_height="wrap_content"
            android:layout_alignParentTop="true">

            <TextView android:text="@string/headline_notused"
                android:gravity="center" android:textSize="24sp" android:textStyle="bold"
                android:textColor="@color/txtcolor" android:layout_width="fill_parent"
                android:layout_height="fill_parent"></TextView>

        </LinearLayout>

        <ProgressBar android:layout_width="fill_parent"
            android:layout_height="wrap_content" android:layout_below="@+id/header"
            android:visibility="gone" style="?android:attr/progressBarStyleHorizontal"
            android:id="@+id/progressbarHorizontal" />

        <ListView android:id="@+id/notUsedList" android:divider="@android:color/transparent"
            android:dividerHeight="5dip" android:layout_height="wrap_content"
            android:layout_marginBottom="5dip" android:layout_width="fill_parent"
            android:layout_weight="1" 
            android:layout_below="@+id/progressbarHorizontal"></ListView>

        <LinearLayout android:orientation="vertical"
            android:layout_below="@+id/notUsedList" android:background="@drawable/app_background"
            android:layout_marginBottom="55dip" android:layout_width="fill_parent"
            android:layout_height="fill_parent">

            <LinearLayout android:id="@+id/myUsedHeader"
                android:background="@drawable/app_topbar" android:layout_marginTop="10dip"
                android:layout_width="fill_parent" android:orientation="horizontal"
                android:layout_height="wrap_content" android:layout_alignParentTop="true">

                <TextView android:text="@string/headline_used" android:gravity="center"
                    android:textSize="24sp" android:textStyle="bold" android:textColor="@color/txtcolor"
                    android:layout_width="fill_parent" android:layout_height="fill_parent"></TextView>

            </LinearLayout>

            <ListView android:id="@+id/usedList"
                android:divider="@android:color/transparent" android:dividerHeight="5dip"
                android:layout_height="fill_parent" android:layout_width="fill_parent"></ListView>

        </LinearLayout>
</RelativeLayout>

Upvotes: 2

Views: 2259

Answers (3)

anujprashar
anujprashar

Reputation: 6335

You mean listview with different sections and each sections having a header. Try this link Jeff sharkey adapter

Upvotes: 2

Alex Cooper
Alex Cooper

Reputation: 54

yes it is possible. you can define one listview in linearlayout and onether in other linearlayout and put both in parent LinearLayout.

Upvotes: 0

Waza_Be
Waza_Be

Reputation: 39558

You should detect when you arrive at the listview last item.

Then, you can change your adapter, change activity or wathever you find appropriate to display the new ListView:

Implement an OnScrollListener, set your ListView's onScrollListener and then you should be able to handle things correctly.

For example:

// Initialization stuff.
yourListView.setOnScrollListener(this);

// ... ... ...

@Override
public void onScroll(AbsListView lw, final int firstVisibleItem,
                 final int visibleItemCount, final int totalItemCount) {

    switch(lw.getId()) {
        case android.R.id.list:     

            final int lastItem = firstVisibleItem + visibleItemCount;
            if(lastItem == totalItemCount) {
                // Last item is fully visible. You will then need to start a New activity, maybe... Or change the layout.. I don't know!
            }
    }
}

Upvotes: 1

Related Questions