java swing 可收缩列表选项_android 可展开(收缩)的列表ListView(ExpandableListView)

packagecom.ideasandroid.sample.adapter;importjava.util.ArrayList;importjava.util.List;importandroid.content.Context;importandroid.view.Gravity;importandroid.view.View;importandroid.view.ViewGroup;importandroid.widget.AbsListView;importandroid.widget.BaseExpandableListAdapter;importandroid.widget.TextView;/***@authorIdeasAndroid

* 可展开(收缩)列表示例*/

public class IdeasExpandableListAdapter extendsBaseExpandableListAdapter {private Context mContext = null;//测试数据,开发时可能来自数据库,网络....

private String[] groups = { "家人", "朋友", "同事"};private String[] familis = { "老爸", "老妈", "妹妹"};private String[] friends = { "小李", "张三", "李四"};private String[] colleagues = { "陈总", "李工", "李客户"};private List groupList = null;private List> itemList = null;publicIdeasExpandableListAdapter(Context context) {this.mContext =context;

groupList= new ArrayList();

itemList= new ArrayList>();

initData();

}/*** 初始化数据,将相关数据放到List中,方便处理*/

private voidinitData() {for (int i = 0; i < groups.length; i++) {

groupList.add(groups[i]);

}

List item1 = new ArrayList();for (int i = 0; i < familis.length; i++) {

item1.add(familis[i]);

}

List item2 = new ArrayList();for (int i = 0; i < friends.length; i++) {

item2.add(friends[i]);

}

List item3 = new ArrayList();for (int i = 0; i < colleagues.length; i++) {

item3.add(colleagues[i]);

}

itemList.add(item1);

itemList.add(item2);

itemList.add(item3);

}public booleanareAllItemsEnabled() {return false;

}/** 设置子节点对象,在事件处理时返回的对象,可存放一些数据*/

public Object getChild(int groupPosition, intchildPosition) {returnitemList.get(groupPosition).get(childPosition);

}public long getChildId(int groupPosition, intchildPosition) {returnchildPosition;

}/** 字节点视图,这里我们显示一个文本对象*/

public View getChildView(int groupPosition, intchildPosition,booleanisLastChild, View convertView, ViewGroup parent) {

TextView text= null;if (convertView == null) {

text= newTextView(mContext);

}else{

text=(TextView) convertView;

}//获取子节点要显示的名称

String name =(String) itemList.get(groupPosition).get(childPosition);//设置文本视图的相关属性

AbsListView.LayoutParams lp = newAbsListView.LayoutParams(

ViewGroup.LayoutParams.FILL_PARENT,40);

text.setLayoutParams(lp);

text.setTextSize(18);

text.setGravity(Gravity.CENTER_VERTICAL|Gravity.LEFT);

text.setPadding(45, 0, 0, 0);

text.setText(name);returntext;

}/** 返回当前分组的字节点个数*/

public int getChildrenCount(intgroupPosition) {returnitemList.get(groupPosition).size();

}/** 返回分组对象,用于一些数据传递,在事件处理时可直接取得和分组相关的数据*/

public Object getGroup(intgroupPosition) {returngroupList.get(groupPosition);

}/** 分组的个数*/

public intgetGroupCount() {returngroupList.size();

}public long getGroupId(intgroupPosition) {returngroupPosition;

}/** 分组视图,这里也是一个文本视图*/

public View getGroupView(int groupPosition, booleanisExpanded,

View convertView, ViewGroup parent) {

TextView text= null;if (convertView == null) {

text= newTextView(mContext);

}else{

text=(TextView) convertView;

}

String name=(String) groupList.get(groupPosition);

AbsListView.LayoutParams lp= newAbsListView.LayoutParams(

ViewGroup.LayoutParams.FILL_PARENT,40);

text.setLayoutParams(lp);

text.setTextSize(18);

text.setGravity(Gravity.CENTER_VERTICAL|Gravity.LEFT);

text.setPadding(36, 0, 0, 0);

text.setText(name);returntext;

}/** 判断分组是否为空,本示例中数据是固定的,所以不会为空,我们返回false

* 如果数据来自数据库,网络时,可以把判断逻辑写到这个方法中,如果为空

* 时返回true*/

public booleanisEmpty() {return false;

}/** 收缩列表时要处理的东西都放这儿*/

public void onGroupCollapsed(intgroupPosition) {

}/** 展开列表时要处理的东西都放这儿*/

public void onGroupExpanded(intgroupPosition) {

}/** Indicates whether the child and group IDs are stable across changes to

* the underlying data.*/

public booleanhasStableIds() {return false;

}/** Whether the child at the specified position is selectable.*/

public boolean isChildSelectable(int groupPosition, intchildPosition) {return true;

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值