在Activity
中,如何獲得第一組視圖Expandable ListView
?獲取第一組Expandable ListView視圖的句柄
下面是我在做什麼:
public int getFirstVisibleGroup() {
LogUtil.i(TAG, "getFirstVisibleGroup called");
int firstVis = listView.getFirstVisiblePosition();
LogUtil.i(TAG, "firstVis = " + firstVis);
long packedPosition = listView.getExpandableListPosition(firstVis);
LogUtil.i(TAG, "packedPosition = " + packedPosition);
LogUtil.i(TAG, "firstVisibleGroup = " + ExpandableListView.getPackedPositionGroup(packedPosition));
return ExpandableListView.getPackedPositionGroup(packedPosition);
}
public View getGroupView(ExpandableListView listView, int groupPosition) {
LogUtil.i(TAG, "getGroupView called");
int flatPosition = listView.getFlatListPosition(groupPosition);
LogUtil.i(TAG, "flatPosition = " + flatPosition);
int first = getFirstVisibleGroup();
LogUtil.i(TAG, "first = " + first);
LogUtil.i(TAG, "returning child at position " + (flatPosition - first));
return listView.getChildAt(flatPosition - first);
}
而且我把它叫做:
View view = getGroupView(listView, 0);
最終成爲listView.getChildAt(0)
。並且返回的view
爲空。
什麼是正確的做法?
你什麼時候試圖調用'listView.getChildAt(0)'?那是在onCreate/onResume之間還是在用戶點擊視圖之後? – Budius
@Budius in'onCreate()',我做了一個服務調用,當服務調用的結果到來時,我更新'Expandable ListView',之後我調用上面的方法。 –