标签:android io os ar for div sp cti on
package com.fangdamai.salewinner.ui.customer;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.BaseExpandableListAdapter;
import android.widget.Button;
import android.widget.ExpandableListView;
import android.widget.ExpandableListView.OnGroupCollapseListener;
import android.widget.ExpandableListView.OnGroupExpandListener;
import android.widget.GridView;
import android.widget.ListAdapter;
import android.widget.TextView;
import com.fangdamai.salewinner.R;
import com.fangdamai.salewinner.ui.base.BaseActivity;
import com.fangdamai.salewinner.utils.LogUtil;
import com.fangdamai.salewinner.widget.MyGridView;
public class CustomerEditActivity extends BaseActivity {
	ExpandableListView expandListview;
	int[] childHeight = new int[7];
	@Override
	protected void onCreate(Bundle arg0) {
		super.onCreate(arg0);
		setContentView(R.layout.activity_customer_edit);
		getSupportActionBar().setTitle("基本信息编辑");
		getSupportActionBar().setDisplayHomeAsUpEnabled(true);
expandListview = (ExpandableListView) findViewById(R.id.expandableListView1);
MyExpandListAdapter adapter = new MyExpandListAdapter(mContext);
expandListview.setAdapter(adapter);
setExpandableListViewHeight();
		expandListview
				.setOnGroupCollapseListener(new OnGroupCollapseListener() {
					@Override
					public void onGroupCollapse(int arg0) {
						ViewGroup.LayoutParams params = expandListview
								.getLayoutParams();
						int orignHeigth = params.height;
						// 获取将要展开的子view的高度
						int gridviewHeight = childHeight[arg0];
						LogUtil.i("oh:" + orignHeigth + "            gh:"
								+ gridviewHeight);
						params.height = orignHeigth - gridviewHeight;
						expandListview.setLayoutParams(params);
						expandListview.requestLayout();
					}
				});
		expandListview.setOnGroupExpandListener(new OnGroupExpandListener() {
			@Override
			public void onGroupExpand(int arg0) {
				ViewGroup.LayoutParams params = expandListview
						.getLayoutParams();
				int orignHeigth = params.height;
				// 获取将要展开的子view的高度
				int gridviewHeight = childHeight[arg0];
				LogUtil.i("oh:" + orignHeigth + "            gh:"
						+ gridviewHeight);
				params.height = orignHeigth + gridviewHeight;
				expandListview.setLayoutParams(params);
				expandListview.requestLayout();
			}
		});
		// for (int i = 0; i < adapter.getGroupCount(); i++) {
		// expandListview.expandGroup(i);
		// }
	}
	
	@Override
	public boolean onOptionsItemSelected(MenuItem item) {
		
		int id = item.getItemId();
		if (id == android.R.id.home) {
			onBackPressed();
			return true;
		}
		return super.onOptionsItemSelected(item);
	}
	private void setExpandableListViewHeight() {
		ListAdapter listAdapter = expandListview.getAdapter();
		int totalHeight = 0;
		LogUtil.i("count:" + listAdapter.getCount());
		for (int i = 0; i < listAdapter.getCount(); i++) {
			View listItem = listAdapter.getView(i, null, expandListview);
			listItem.measure(0, 0);
			totalHeight += listItem.getMeasuredHeight();
			LogUtil.i("height:" + totalHeight);
		}
		ViewGroup.LayoutParams params = expandListview.getLayoutParams();
		params.height = totalHeight
				+ (expandListview.getDividerHeight() * (listAdapter.getCount() - 1));
		LogUtil.i("exheight:" +params.height);
		expandListview.setLayoutParams(params);
		expandListview.requestLayout();
	}
	private int getGridViewHeight(GridView gv) {
		ListAdapter listAdapter = gv.getAdapter();
		int totalHeight = 0;
		LogUtil.i("count:" + listAdapter.getCount());
		int count = listAdapter.getCount();
		int columns = gv.getNumColumns();
		int rows = count / columns + count % columns == 0 ? 0 : 1;
		for (int i = 0; i < listAdapter.getCount(); i++) {
			View listItem = listAdapter.getView(i, null, gv);
			listItem.measure(0, 0);
			totalHeight += listItem.getMeasuredHeight();
			LogUtil.i("height:" + totalHeight);
		}
int height = totalHeight + (gv.getVerticalSpacing() * (rows - 1));
		return height;
	}
	private void setGridViewHeight(GridView gridview, int height) {
		ViewGroup.LayoutParams params = gridview.getLayoutParams();
		params.height = height;
		gridview.setLayoutParams(params);
		gridview.requestLayout();
	}
class MyExpandListAdapter extends BaseExpandableListAdapter {
private Context context;
		private String[] groups = { "购房区域", "购房面积", "房源户型/类型", "购房预算", "置业动机",
				"急迫程度", "能否决策" };
		private String[][] childs = {
				{ "不 限", "园区", "新区", "相城区", "姑苏区", "吴中区" },
				getResources().getStringArray(R.array.buid_area),
				getResources().getStringArray(R.array.buid_type_room),
				getResources().getStringArray(R.array.buy_budget),
				getResources().getStringArray(R.array.buy_reason),
				getResources().getStringArray(R.array.urgent_degree),
				getResources().getStringArray(R.array.canconfirm) };
		public MyExpandListAdapter(Context context) {
			this.context = context;
		}
		@Override
		public Object getChild(int arg0, int arg1) {
			return null;
		}
		@Override
		public long getChildId(int arg0, int arg1) {
			return 0;
		}
		@Override
		public View getChildView(int groupPosition, int childPosition,
				boolean isLastChild, View convertView, ViewGroup parent) {
			convertView = LayoutInflater.from(context).inflate(
					R.layout.item_section_content, null);
			GridView gridview = (GridView) convertView
					.findViewById(R.id.gridView1);
			gridview.setAdapter(new MyGridviewAdatper(childs[groupPosition]));
			int height = getGridViewHeight(gridview);
			childHeight[groupPosition] = height;
			LogUtil.i("position:" + groupPosition + "          h:" + height);
			setGridViewHeight(gridview, height);
			return convertView;
		}
		@Override
		public int getChildrenCount(int arg0) {
			return 1;
		}
		@Override
		public Object getGroup(int arg0) {
			return groups[arg0];
		}
		@Override
		public int getGroupCount() {
			return groups.length;
		}
		@Override
		public long getGroupId(int arg0) {
			return 0;
		}
		@Override
		public View getGroupView(int groupPosition, boolean isExpanded,
				View convertView, ViewGroup parent) {
			convertView = LayoutInflater.from(context).inflate(
					R.layout.item_section_header, null);
			TextView txtContent = (TextView) convertView
					.findViewById(R.id.txt_header);
			txtContent.setText(getGroup(groupPosition).toString());
			return convertView;
		}
		@Override
		public boolean hasStableIds() {
			return false;
		}
		@Override
		public boolean isChildSelectable(int arg0, int arg1) {
			return false;
		}
}
class MyGridviewAdatper extends BaseAdapter {
private String[] items;
		public MyGridviewAdatper(String[] items) {
			this.items = items;
		}
		@Override
		public int getCount() {
			return items.length;
		}
		@Override
		public Object getItem(int arg0) {
			return items[arg0];
		}
		@Override
		public long getItemId(int arg0) {
			return 0;
		}
		@Override
		public View getView(int position, View convertView, ViewGroup parent) {
			convertView = LayoutInflater.from(CustomerEditActivity.this)
					.inflate(R.layout.item_grid_content, null);
			Button txtContent = (Button) convertView.findViewById(R.id.button1);
			txtContent.setText(getItem(position).toString());
			return convertView;
		}
	}
}
标签:android io os ar for div sp cti on
原文地址:http://www.cnblogs.com/jiezzy/p/3992445.html