0
私はExpandableListViewの作業がexpandableListViewです。今私は、グループ名の横にRadioButtonを挿入するが、私はこれを行うとき、レイアウトを拡張するリスナーは動作しませんexpandableListView with button。ExpandableListビューのRadioButton
私はExpandableListViewの作業がexpandableListViewです。今私は、グループ名の横にRadioButtonを挿入するが、私はこれを行うとき、レイアウトを拡張するリスナーは動作しませんexpandableListView with button。ExpandableListビューのRadioButton
複雑な拡張可能なビューで同様の問題が発生しました。 ExpandableListView.OnGroupClickListenerを作成する必要があります。
public class ExpandableListViewListener implements ExpandableListView.OnGroupClickListener {
private ExpandableListView expandableListView;
private Context context;
public ExpandableListViewListener(ExpandableListView expandableListView, Context context) {
this.expandableListView = expandableListView;
this.context = context;
}
/**
* Method that set the height of the expandableView
* @param listView to be expanded
* @param group index of the group tobe expanded
*/
private void setListViewExpanded(ExpandableListView listView, int group) {
int totalHeight = 0;
/*
* It checks GroupView height and, if expanded, relative children
* It sets final result as listview height.
* NOTE: it must be inserted into a card for a correct height calculation between different
* API versions
*/
ExpandableListAdapter listAdapter = listView.getExpandableListAdapter();
int desiredWidth = View.MeasureSpec.makeMeasureSpec(listView.getWidth(), View.MeasureSpec.EXACTLY);
/*
* 2 nested cycles are performed:
* one for groupItems (headers)
* > one nested for childItems (when header is expanded)
*/
for (int i = 0; i < listAdapter.getGroupCount(); i++) {
View groupItem = listAdapter.getGroupView(i, false, null, listView);
groupItem.measure(desiredWidth, View.MeasureSpec.UNSPECIFIED);
//add current groupItem height to total count
totalHeight += groupItem.getMeasuredHeight();
if (((listView.isGroupExpanded(i)) && (i != group))
|| ((!listView.isGroupExpanded(i)) && (i == group))) {
for (int j = 0; j < listAdapter.getChildrenCount(i); j++) {
View listItem = listAdapter.getChildView(i, j, false, null, listView);
listItem.measure(desiredWidth, View.MeasureSpec.UNSPECIFIED);
// add expanded child height
totalHeight += (int) context.getResources().getDimension(R.dimen.space_s) + listItem.getMeasuredHeight();
}
}
}
//setting tot height
ViewGroup.LayoutParams params = listView.getLayoutParams();
params.height = totalHeight;
listView.setLayoutParams(params);
listView.requestLayout();
}
}