Android開發(fā)實(shí)現(xiàn)ScrollView中嵌套兩個(gè)ListView的方法
本文實(shí)例講述了Android開發(fā)實(shí)現(xiàn)ScrollView中嵌套兩個(gè)ListView的方法。分享給大家供大家參考,具體如下:
做的項(xiàng)目中要使用兩個(gè)ListView在同一個(gè)頁面上下顯示,因?yàn)閿?shù)據(jù)源不同,不能通過在Adapter中設(shè)置標(biāo)志位去區(qū)分顯示,最后只能硬著頭皮做一個(gè)ScrollView嵌套兩個(gè)ListView,但按正常情況是不能同時(shí)顯示的,會(huì)出現(xiàn)上面的ListView完全顯示,下面的只顯示一個(gè)Item,查了一些資料終于成功了
主要有一個(gè)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 { // 是一個(gè)Scrollview 中 添加兩個(gè)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); } }
然后再寫兩個(gè)Listview,如下
signListview.setAdapter(mYinggaoSignListAdapter); appListView.setAdapter(adapter); ListViewUtility.setListViewHeightBasedOnChildren(signListview); ListViewUtility.setListViewHeightBasedOnChildren(appListView);
最后把兩個(gè)ListView添加到 ListViewUtility中,并且兩個(gè)ListView要填充完再添加,兩個(gè)ListView中的adpter的布局最外層要使用LinearLayout,只有LinearLayout 在ListViewUtility 中才能成功測(cè)量每個(gè)Item 的高度,不然就會(huì)出錯(cuò)
更多關(guān)于Android相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Android基本組件用法總結(jié)》、《Android開發(fā)入門與進(jìn)階教程》、《Android布局layout技巧總結(jié)》、《Android視圖View技巧總結(jié)》、《Android編程之a(chǎn)ctivity操作技巧總結(jié)》、《Android資源操作技巧匯總》及《Android控件用法總結(jié)》
希望本文所述對(duì)大家Android程序設(shè)計(jì)有所幫助。
相關(guān)文章
Android實(shí)現(xiàn)自定義輪播圖片控件示例
我們都知道我們做軟件的時(shí)候,有些應(yīng)用是有廣告的輪番圖的,我們實(shí)現(xiàn)這個(gè)功能的時(shí)候大多數(shù)是采用:ViewPager +LinearLayout來實(shí)現(xiàn)的,今天分享一下我自己自定義的廣告輪番圖的控件!2016-11-11android2.3.5 CDMA/EVDO撥號(hào)APN解決方案
google提供的android2.3里面,只能在GSM/WCDMA情況下才能從“設(shè)置”->“無線和網(wǎng)絡(luò)”->“移動(dòng)網(wǎng)絡(luò)”->“接入點(diǎn)名稱”中選擇不同的apn帳號(hào)進(jìn)行撥號(hào)連接,而CDMA/EVDO則沒有這個(gè)功能,接下來本文介紹一些方法實(shí)現(xiàn)這個(gè)功能,感興趣的朋友可以了解下2013-01-01完美解決EditText和ScrollView的滾動(dòng)沖突(上)
這篇文章主要為大家詳細(xì)介紹了完美解決EditText和ScrollView滾動(dòng)沖突的方法,感興趣的小伙伴們可以參考一下2016-06-06Android菜單的定義及ActionBar的實(shí)現(xiàn)
本篇文章主要介紹了Android菜單的定義及ActionBar的實(shí)現(xiàn),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-08-08Android?掃碼槍輸入時(shí)屏蔽軟鍵盤和頂部狀態(tài)欄的解決方案
在Android設(shè)備上,使用掃碼槍時(shí)常遇到軟鍵盤和頂部狀態(tài)欄顯示問題,本文介紹了在Android 7.1.2版本上,如何通過設(shè)置inputType為none屏蔽軟鍵盤,以及通過hideStatusBar和NoActionBar方法隱藏頂部狀態(tài)欄,以優(yōu)化掃碼槍使用界面,這些方法有助于提升使用掃碼槍場(chǎng)景的用戶體驗(yàn)2024-10-10Android AsyncTask完全解析 帶你從源碼的角度徹底理解
這篇文章主要是針對(duì)Android AsyncTask進(jìn)行完全解析,帶你從源碼的角度徹底理解,感興趣的小伙伴們可以參考一下2016-04-04android實(shí)現(xiàn)常駐通知欄遇到的問題及解決辦法
這篇文章主要介紹了android實(shí)現(xiàn)常駐通知欄遇到的問題及解決辦法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-06-06android開發(fā)基礎(chǔ)教程—三種方式實(shí)現(xiàn)xml文件解析
本文將介紹三種方式:sax方式/dom方式/pull方式實(shí)現(xiàn)xml文件解析,感興趣的朋友可以了解下2013-01-01android 中 SQLiteOpenHelper的封裝使用詳解
這篇文章主要介紹了android 中 SQLiteOpenHelper的封裝使用詳解,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-02-02