Android auto merge two listview in one screen

前端 未结 2 1395
孤街浪徒
孤街浪徒 2020-12-12 01:23

My view look like:




        
相关标签:
2条回答
  • 2020-12-12 01:44

    Try the below example: Layout :

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        android:weightSum="3" >
    
        <ListView
            android:id="@+id/list2"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:background="@drawable/face"
            android:cacheColorHint="#00000000" />
    
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="10dp"
            android:layout_weight="1"
            android:orientation="vertical" >
    
            <TextView
                android:id="@+id/text"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="Header"
                android:visibility="visible" />
    
            <ListView
                android:id="@+id/list"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:background="@drawable/background"
                android:cacheColorHint="#00000000" />
        </LinearLayout>
    
    
    
    </LinearLayout>
    

    In your class

     ListViewAdapter arrayAdapter = new ListViewAdapter(this, values);
    
                listview.setAdapter(arrayAdapter);
    
            ListViewAdapter arrayAdapter2 = new ListViewAdapter(this, values2);
    
                listview2.setAdapter(arrayAdapter2);
    

    Add these two lines in onCreate with your listview:

    Utility.setListViewHeightBasedOnChildren(listview);
            Utility.setListViewHeightBasedOnChildren(listview2);
    

    Create a inner class in your Activity:

    //Test scrollview custom
        public static class Utility {
            public static void setListViewHeightBasedOnChildren(ListView listView) {
                ListAdapter listAdapter = listView.getAdapter(); 
                if (listAdapter == null) {
                    // pre-condition
                    return;
                }
    
                int totalHeight = 0;
                for (int i = 0; i < listAdapter.getCount(); i++) {
                    View listItem = listAdapter.getView(i, null, listView);
                    listItem.measure(0, 0);
                    totalHeight += listItem.getMeasuredHeight();
                }
    
                ViewGroup.LayoutParams params = listView.getLayoutParams();
                params.height = totalHeight + (listView.getDividerHeight() * (listAdapter.getCount() - 1));
                listView.setLayoutParams(params);
            }
        }
    

    Code taken from : listViewNotScrolling

    It would definitely work! :)

    0 讨论(0)
  • 2020-12-12 01:49

    If you want to create Listview with Header. Then Use Section Header Listview.

    Refer this Example.

    Hope it will help you!!

    OR

    If its fix that Only Two Listview & one Header Between them

    Then

    1) Take Only one Listview.

    2) Use Custom Adapter & Custom Layout for Listview Row.

    3) Add Two Extra TextView in Custom Layout

    Listing First ListView Data

    • (Fixed TextView - Header -Put its Visibility VISIBLE)
    • (Extra 1 TextView - Header -Put its Visibility GONE )
    • (Extra 2 TextView - Header -Put its Visibility GONE )

    Listing Second ListView Data

    • (Fixed TextView - Header -Put its Visibility GONE )
    • (Extra 1 TextView - Header -Put its Visibility VISIBLE )
    • (Extra 2 TextView - Header -Put its Visibility VISIBLE )
    0 讨论(0)
提交回复
热议问题