程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> ScrollView中嵌套兩個ListView

ScrollView中嵌套兩個ListView

編輯:C++入門知識

ScrollView中嵌套兩個ListView


做的項目中要使用兩個ListView在同一個頁面上下顯示,因為數據源不同,不能通過在Adapter中設置標志位去區分顯示,最後只能硬著頭皮做一個ScrollView嵌套兩個ListView,但按正常情況是不能同時顯示的,會出現上面的ListView完全顯示,下面的只顯示一個Item,查了一些資料終於成功了

主要有一個ListViewUtility ,代碼如下:


import java.io.File;

import android.content.Intent;
import android.net.Uri;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ListAdapter;
import android.widget.ListView;

public class ListViewUtility {   //  是一個Scrollview 中 添加兩個Listview的顯示布局
    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++) { 
//        	Global.pos = 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); 
    } 
    
} 

然後再寫兩個Listview,如下

signListview.setAdapter(mYinggaoSignListAdapter);
appListView.setAdapter(adapter);
ListViewUtility.setListViewHeightBasedOnChildren(signListview);
ListViewUtility.setListViewHeightBasedOnChildren(appListView);

最後把兩個ListView添加到 ListViewUtility中,並且兩個ListView要填充完再添加,兩個ListView中的adpter的布局最外層要使用LinearLayout,只有LinearLayout 在ListViewUtility 中才能成功測量每個Item 的高度,不然就會出錯


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved