在ListView中巢狀ListView的事件處理

2021-07-22 06:05:35 字數 2556 閱讀 1206

前天在工作中遇到在listview中的item需要用listview來展現處理後的內容,然後就遇到了乙個很頭疼的問題,作為item的listview沒法進行滑動,而且顯示也不正常,只是顯示幾個子item。不能將子item全部顯示,原因是在控制項繪製出來之前要對listview的大小進行計算,要解決將子listview全部顯示出來的問題,就是重新計算一下其大小告知系統即可。後面這個問題比較好解決,網上已經給出解決方案:

前輩們給出了乙個方法,重新計算子listview的大小,然後在設定本listview的adapter之後執行這個方法就好了,具體**如下:

01/**

02

03* 設定listview的高度

04

05*/

06

07publicvoidsetlistviewheight(listview listview)

16

17inttotalheight =0;

18

19for(inti =0; i < listadapter.getcount(); i++)

28

29viewgroup.layoutparams params = listview.getlayoutparams();

30

31params.height = totalheight + (listview.getdividerheight() * (listadapter.getcount() -1));

32

33listview.setlayoutparams(params);

34

35}

但是這個方法設定的item的layout必須是帶有onmeasure()方法的控制項,否則在計算的時候會報錯,建議使用linearlayout。

再乙個思路相同,但是,不是額外做方法來實現onmeasure()方法的計算listview的大小,而是自己繼承listview,重寫listview的onmeasure()方法,來自己計算listview的高度,然後再xml中直接使用這個自定義的listview就可以了。

01publicclassmylistviewextendslistview

08

09publicmylistview  (context context)

14

15publicmylistview  (context context, attributeset attrs,intdefstyle)

20

21@override

22

23publicvoidonmeasure(intwidthmeasurespec,intheightmeasurespec)

32

33}

這是解決讓作為item的listview顯示全部內容的方案,但是有些時候我們是想讓作為item的listview不用全部顯示,而是可以進行滑動,要解決這個問題就需要了解一下android對事件的分發機制了

ListView中巢狀RadioButton按鈕

listview中巢狀radiobutton按鈕中導致單選按鈕可以多選,所以為了解決這個問題,我看網上都出現好多方法。試了好多,也不行,自己思考,豐衣足食。核心 final int index position holder.radio.setonclicklistener new onclickl...

解決ListView巢狀ListView遇到的問題

listview巢狀會造成的問題主要是子listview的高度錯誤導致內容不能正常顯示完,解決這個問題,我個人第乙個想法就是重新計算子listview的高度,如下 private void setlistviewheightbasedonchildren listview listview int ...

ListView巢狀listView問題

listview巢狀listview 外層的listview是原生的,裡面的是自定義的mylistview 1.如果兩層都是listview,出現問題 裡層的listview只會顯示一條資料 2.如果外層mylistview,裡層listview 出現問題 導致只能顯示一屏資料,而且裡層的listv...