博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
scrollview gridview
阅读量:6982 次
发布时间:2019-06-27

本文共 6823 字,大约阅读时间需要 22 分钟。

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;
}

}

}

转载于:https://www.cnblogs.com/jiezzy/p/3992445.html

你可能感兴趣的文章
前端vue框架的跨域处理方法
查看>>
共享经济、短视频、新零售、AI:寻觅2019年新经济未来走向
查看>>
Typescript尝试
查看>>
金融行业容器平台落地路径:敏捷响应业务更迭
查看>>
CodeMirror 5.46.0 发布,多功能在线代码编辑器
查看>>
zabbix配置邮箱报警
查看>>
使用ulimit设置文件最大打开数
查看>>
XmlHttpRequest 对象详解
查看>>
浅析Banner设计
查看>>
SQL Server扩展事件(Extended Events)-- 将现有 SQL 跟踪脚本转换为扩展事件会话
查看>>
传说中的裸奔节--认识及体验CSS
查看>>
二十年后的回眸(2)——顺风顺水的前三年
查看>>
烂泥:为KVM虚拟机添加网卡
查看>>
数据驱动安全架构升级---“花瓶”模型迎来V5.0(二)
查看>>
Sql Server 常用日期格式
查看>>
让“云”无处不在-Citrix Xenserver之一 环境搭建
查看>>
CentOS 5.5下LVM的分区管理
查看>>
Vsftp与PAM虚拟用户
查看>>
GoogleAppEngine是什么?
查看>>
利用 UML 进行实体关系建模
查看>>