展会信息港展会大全

android ExpandableListView简单应用
来源:互联网   发布日期:2015-11-26 17:10:43   浏览:1923次  

导读: 首先我们还是来看一些案例,还是拿搜狐新闻客户端,因为我天天上下班没事爱看这个东东,因为上班没时间看新闻,上下班路途之余浏览下新闻打发时间嘛. ...

首先我们还是来看一些案例,还是拿搜狐新闻客户端,因为我天天上下班没事爱看这个东东,因为上班没时间看新闻,上下班路途之余浏览下新闻打发时间嘛.

看这个效果挺棒吧,其实实现起来也不难,我简单说明下.

首先我们用到的控件是:ExpandableListView

布局文件:

[java]

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent" >

<!--

android:groupIndicator="@null" 取消默认图片

android:childIndicatorLeft 设置孩子左边间距

android:dividerHeight 这个高度一定要设置,不然显示不出来分割线,估计默认为0 吧

android:childDivider="@drawable/child_bg" 这个直接引color,或者图片会导致整个孩子背景都为这个颜色,不知道原因,如果有谁知道,请Give me say.

-->

<ExpandableListView

android:id="@+id/expandablelist"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:cacheColorHint="@null"

android:childDivider="@drawable/child_bg"

android:childIndicatorLeft="0dp"

android:divider="@color/Grey"

android:dividerHeight="1dp"

android:groupIndicator="@null"

android:scrollbarAlwaysDrawHorizontalTrack="true" >

</ExpandableListView>

</RelativeLayout>

MyexpandableListAdapter.java

[java]

/***

* 数据源

*

* @author Administrator

*

*/

class MyexpandableListAdapter extends BaseExpandableListAdapter {

private Context context;

private LayoutInflater inflater;

public MyexpandableListAdapter(Context context) {

this.context = context;

inflater = LayoutInflater.from(context);

}

// 返回父列表个数

@Override

public int getGroupCount() {

return groupList.size();

}

// 返回子列表个数

@Override

public int getChildrenCount(int groupPosition) {

return childList.get(groupPosition).size();

}

@Override

public Object getGroup(int groupPosition) {

return groupList.get(groupPosition);

}

@Override

public Object getChild(int groupPosition, int childPosition) {

return childList.get(groupPosition).get(childPosition);

}

@Override

public long getGroupId(int groupPosition) {

return groupPosition;

}

@Override

public long getChildId(int groupPosition, int childPosition) {

return childPosition;

}

@Override

public boolean hasStableIds() {

return true;

}

@Override

public View getGroupView(int groupPosition, boolean isExpanded,

View convertView, ViewGroup parent) {

GroupHolder groupHolder = null;

if (convertView == null) {

groupHolder = new GroupHolder();

convertView = inflater.inflate(R.layout.group, null);

groupHolder.textView = (TextView) convertView

.findViewById(R.id.group);

groupHolder.imageView = (ImageView) convertView

.findViewById(R.id.image);

groupHolder.textView.setTextSize(15);

convertView.setTag(groupHolder);

} else {

groupHolder = (GroupHolder) convertView.getTag();

}

groupHolder.textView.setText(getGroup(groupPosition).toString());

if (isExpanded)// ture is Expanded or false is not isExpanded

groupHolder.imageView.setImageResource(R.drawable.expanded);

else

groupHolder.imageView.setImageResource(R.drawable.collapse);

return convertView;

}

@Override

public View getChildView(int groupPosition, int childPosition,

boolean isLastChild, View convertView, ViewGroup parent) {

if (convertView == null) {

convertView = inflater.inflate(R.layout.item, null);

}

TextView textView = (TextView) convertView.findViewById(R.id.item);

textView.setTextSize(13);

textView.setText(getChild(groupPosition, childPosition).toString());

return convertView;

}

@Override

public boolean isChildSelectable(int groupPosition, int childPosition) {

return true;

}

}

@Override

public boolean onGroupClick(final ExpandableListView parent, final View v,

int groupPosition, final long id) {

return false;

}

上面实现起来比较简单.相信对listview熟悉的朋友看这个一定很熟悉,无外乎就是多了个孩子.

selector_group.xml

[java]

<?xml version="1.0" encoding="utf-8"?>

<selector xmlns:android="http://schemas.android.com/apk/res/android">

<item android:drawable="@color/Grey" android:state_pressed="true"></item>

<item android:drawable="@color/Grey" android:state_selected="true"></item>

<item android:drawable="@color/LightGray"></item>

</selector>

selector_item.xml同理.

效果图:

效果虽然丑了点,不过就是这么回事,至于显示group的item,还是孩子的item,你可以随意定制.

不想敲的同学,可以下载源码,稍作调整.

赞助本站

人工智能实验室

相关热词: android开发 教程

AiLab云推荐
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港