執(zhí)行多次原因是因?yàn)槊匡@示一個(gè)VIew学歧,它都去測(cè)量view的高度桨醋,執(zhí)行measure方法,導(dǎo)致getView執(zhí)行多次观堂。
把width和height都設(shè)置成fill_parent,如果ListView有父布局洒缀,也把父布局的width和height設(shè)置成fill_parent,這樣就成功的解決了自定義適配器getView 執(zhí)行多次的問(wèn)題艰山。
可以布局太復(fù)雜的情況下醉锅,全部按照f(shuō)ill_parent去調(diào)整不現(xiàn)實(shí)侣签。所以想了另一種方案,就是動(dòng)態(tài)固定高度蛇摸。
在程序運(yùn)行后,固定ListView的高度灿巧,然后再初始化Item信息赶袄。
private void fixedListView(){
listView = (ListView) findViewById(R.id.listview);
ViewGroup.LayoutParams params = listView.getLayoutParams();
layout = (HorizontalScrollView) findViewById(R.id.layout);
params.height = layout.getHeight(); //需要設(shè)置的listview的高度,你可以設(shè)置成一個(gè)定值抠藕,也可以設(shè)置成其他容器的高度饿肺,如果是其他容器高度,那么不要在oncreate中執(zhí)行盾似,需要做延時(shí)處理敬辣,否則高度為0
listView.setLayoutParams(params);
}