80,350
社区成员
发帖
与我相关
我的任务
分享
/**
* 评分细则列表
*/
scoreList = (ExpandableListView) findViewById(R.id.scorelist);
//父级菜单
List<String> groupArray = new ArrayList<String>();
groupArray.add(" 评分细则");
final List<List<String>> childArray = new ArrayList<List<String>>();
List<String> child = new ArrayList<String>();
child.add("序号");
child.add("日期");
child.add("工程类型");
child.add("基础施工部分");
child.add("电气施工部分");
child.add("施工班组");
child.add("备注");
childArray.add(child);
ExpandableAdapter adapter = new ExpandableAdapter(this, groupArray, childArray);
scoreList.setAdapter(adapter);
//组展开后重新设置高度
scoreList.setOnGroupClickListener(new OnGroupClickListener() {
@Override
public boolean onGroupClick(ExpandableListView parent, View v,
int groupPosition, long id) {
oneSize = scoreList.getChildAt(groupPosition).getHeight();
ViewGroup.LayoutParams params = scoreList.getLayoutParams();
allHeight =(childArray.get(groupPosition).size()+1)*oneSize;
params.height =allHeight;
scoreList.setLayoutParams(params);
return false;
}
});
//组收缩调用的监听事件
scoreList.setOnGroupCollapseListener(new OnGroupCollapseListener() {
@Override
public void onGroupCollapse(int groupPosition) {
ViewGroup.LayoutParams params = scoreList.getLayoutParams();
params.height = 60;
scoreList.setLayoutParams(params);
}
});
/**************************************** 以下为自定义方法 *********************************************/
/**
* Children 's View
*
* @param string
* @return
*/
public View getGenericView(String string) {
final View view ;
if("基础施工部分".equals(string)||"电气施工部分".equals(string)){
List<String> child = null;
AbsListView.LayoutParams layoutParams = new AbsListView.LayoutParams(
ViewGroup.LayoutParams.FILL_PARENT, 64);
view = new ExpandableListView(activity);
// 次级父集合
nextGroupArray = new ArrayList<String>();
if ("基础施工部分".equals(string)) {
nextGroupArray.add(" 基础施工部分");
} else if ("电气施工部分".equals(string)) {
nextGroupArray.add(" 电气施工部分");
}
// 次级子集合
nextChildArray = new ArrayList<List<String>>();
child = new ArrayList<String>();
child.add(" 安全评分");
child.add(" 质量评分");
child.add(" 文明施工评分");
child.add(" 物资返料评分");
child.add(" 经济处罚");
nextChildArray.add(child);
ExpandableAdapter adapter = new ExpandableAdapter(activity, nextGroupArray, nextChildArray);
((ExpandableListView) view).setAdapter(adapter);
//组展开后重新设置高度
((ExpandableListView) view).setOnGroupClickListener(new OnGroupClickListener() {
@Override
public boolean onGroupClick(ExpandableListView parent, View v,
int groupPosition, long id) {
ConstructionWorkScore.resetjcHight();
int oneSize = ((ViewGroup) view).getChildAt(groupPosition).getHeight();
ViewGroup.LayoutParams params = view.getLayoutParams();
int allHeight =(nextChildArray.get(groupPosition).size()+1)*oneSize;
params.height =allHeight;
view.setLayoutParams(params);
v.setTag(view);
return false;
}
});
//组收缩调用的监听事件
((ExpandableListView) view).setOnGroupCollapseListener(new OnGroupCollapseListener() {
@Override
public void onGroupCollapse(int groupPosition) {
ConstructionWorkScore.closeHight();
}
});
}else {
AbsListView.LayoutParams layoutParams = new AbsListView.LayoutParams(
ViewGroup.LayoutParams.FILL_PARENT, 64);
view = new TextView(activity);
view.setLayoutParams(layoutParams);
// Center the text vertically
((TextView) view).setGravity(Gravity.CENTER_VERTICAL);
// Set the text starting position
view.setPadding(36, 0, 0, 0);
((TextView) view).setText(string);
}
return view;
}
重新设置整个列表的方法(在第一个ExpandableListView的类中):
/**
* 打开基础评分
*/
public static void resetjcHight() {
if(openTimes>3){
openTimes=3;
}
ViewGroup.LayoutParams params = scoreList.getLayoutParams();
int avg = allHeight + oneSize *3*openTimes+50;
params.height = avg;
scoreList.setLayoutParams(params);
openTimes=openTimes+1;
}
/**
* 关闭基础评分
*/
public static void closeHight() {
ViewGroup.LayoutParams params = scoreList.getLayoutParams();
int avg = allHeight;
params.height = avg;
scoreList.setLayoutParams(params);
openTimes=openTimes-1;
}