Layout
<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:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
tools:context=".ExpandableListViewActivity"> <ExpandableListView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/ecpandable"
/>
</RelativeLayout>
JAVA代码

package com.example.wequst.test2;

import android.app.Activity;
import android.app.AlertDialog;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AbsListView;
import android.widget.BaseExpandableListAdapter;
import android.widget.ExpandableListAdapter;
import android.widget.ExpandableListView;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener; public class ExpandableListViewActivity extends Activity { @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_expandable_list_view);
/**BaseExpandableListAdapter实现了ExpandableListAdapter*/
final ExpandableListAdapter adapter = new BaseExpandableListAdapter(){ /**----------定义数组-------------------------------------------------------------------*/
private int[] images = new int[]{
R.drawable.ic_launcher,
R.drawable.ic_launcher,
R.drawable.ic_launcher
};
private String[] armTypes = new String[]{
"神族","虫族","人族"
};
private String[][] arms = new String[][]{
{"狂战士","龙骑士","黑暗圣堂"},
{"小狗","飞龙","自爆妃子"},
{"步兵","伞兵","护士mm"}
}; /*===========组元素表示可折叠的列表项,子元素表示列表项展开后看到的多个子元素项=============*/ /**----------得到armTypes和arms中每一个元素的ID-------------------------------------------*/ //获取组在给定的位置编号,即armTypes中元素的ID
@Override
public long getGroupId(int groupPosition) {
return groupPosition;
} //获取在给定的组的儿童的ID,就是arms中元素的ID
@Override
public long getChildId(int groupPosition, int childPosition) {
return childPosition;
} /**----------根据上面得到的ID的值,来得到armTypes和arms中元素的个数 ------------------------*/ //获取的群体数量,得到armTypes里元素的个数
@Override
public int getGroupCount() {
return armTypes.length;
} //取得指定组中的儿童人数,就是armTypes中每一个种族它军种的个数
@Override
public int getChildrenCount(int groupPosition) {
return arms[groupPosition].length;
} /**----------利用上面getGroupId得到ID,从而根据ID得到armTypes中的数据,并填到TextView中 -----*/ //获取与给定的组相关的数据,得到数组armTypes中元素的数据
@Override
public Object getGroup(int groupPosition) {
return armTypes[groupPosition];
} //获取一个视图显示给定组,存放armTypes
@Override
public View getGroupView(int groupPosition, boolean isExpanded,
View convertView, ViewGroup parent) {
TextView textView = getTextView();//调用定义的getTextView()方法
textView.setText(getGroup(groupPosition).toString());//添加数据
return textView;
} /**----------利用上面getChildId得到ID,从而根据ID得到arms中的数据,并填到TextView中---------*/ //获取与孩子在给定的组相关的数据,得到数组arms中元素的数据
@Override
public Object getChild(int groupPosition, int childPosition) {
return arms[groupPosition][childPosition];
} //获取一个视图显示在给定的组 的儿童的数据,就是存放arms
@Override
public View getChildView(int groupPosition, int childPosition, boolean isLastChild,
View convertView, ViewGroup parent) {
LinearLayout ll = new LinearLayout(ExpandableListViewActivity.this);
ImageView logo = new ImageView(ExpandableListViewActivity.this);
logo.setImageResource(images[groupPosition]);//添加图片
ll.addView(logo);
TextView textView = getTextView();//调用定义的getTextView()方法
textView.setText(getChild(groupPosition,childPosition).toString());//添加数据
ll.addView(textView);
return ll;
} /**------------------自定义一个设定TextView属性的方法----------------------------------------------*/ //定义一个TextView
private TextView getTextView(){
AbsListView.LayoutParams lp = new AbsListView.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT,100);
TextView textView = new TextView(ExpandableListViewActivity.this);
textView.setLayoutParams(lp);
textView.setPadding(70, 0, 0, 0);
textView.setTextSize(20);
return textView;
} /**-------------------其他设置-------------------------------------------------------------------*/ //孩子在指定的位置是可选的,即:arms中的元素是可点击的
@Override
public boolean isChildSelectable(int groupPosition,
int childPosition) {
return true;
} //表示孩子是否和组ID是跨基础数据的更改稳定
public boolean hasStableIds() {
return true;
}
}; /**使用适配器*/
final ExpandableListView expandListView = (ExpandableListView) this.findViewById(R.id.ecpandable);
expandListView.setAdapter(adapter); expandListView.setOnChildClickListener(new ExpandableListView.OnChildClickListener() {
@Override
public boolean onChildClick(ExpandableListView parent, View v,
int groupPosition, int childPosition, long id) {
return true;
}
}); expandListView.setOnGroupClickListener(new ExpandableListView.OnGroupClickListener() {
@Override
public boolean onGroupClick(ExpandableListView parent, View v,
int groupPosition, long id) { int i=adapter.getChildrenCount(groupPosition);
if(i==0)
{ }
return false; //默认为false,设为true时,点击事件不会展开Group
}
});
} }

Adroid 展开收起效果实现的更多相关文章

  1. js 展开/收起效果

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  2. javascript 特效实现(1)——展开选项和收起效果

    知识点:javascript事件:判断当前展开收起状态:延迟执行setTimeout方法. 1.简单的展开和收起效果: 1.1 静态结构HTML代码分析 body包含最外层的div id=" ...

  3. css之实现下拉框自上而下展开动画效果&&自下而上收起动画效果

    HTML代码: <div className={CX('font-size-selector-sub-list', { show: shouldSubListShow === true, hid ...

  4. 不使用字体图标和图片,只使用css如何做出展开收起的效果

    <i class="iconArrow" :class="[ littleNavState === item.meta.id ? 'arrowOpen' : '' ...

  5. HTML-003-模拟IDE代码展开收起功能简单示例

    当先我们在日常的编程开发工作中使用编程工具(例如 Eclipse.Sublime 等等)都有相应的代码折叠展开功能,如下图所示,极大的方便了我们的编码工作.

  6. [TimLinux] CSS 纯CSS实现动画展开/收起功能

    内容转自CSS世界,理解之后进行了简化,简化后代码: <!DOCTYPE html> <html> <head> <meta charset=utf-8 /& ...

  7. javasript简单实现文字的展开收起(无动画)

    今天在工作遇到展开和收起的需求,在网上找了很多方法,今天来写一下我觉得比较简单的方法 在项目中需要达到如图这种效果 首先想的是使用overflow简单且粗暴,在需要展开的的文字定义样式 { overf ...

  8. el-upload上传列表实现 展开 收起

    # el-upload上传列表实现 展开 收起 #### 无图言*,所以先上最终效果图(想参考代码的可以直接滑到最后) ### 具体实现思路 注意: 每个人的项目环境以及需求,都不尽相同,所以这里仅仅 ...

  9. jquery 展开关闭效果

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

随机推荐

  1. HDU 5055 Bob and math problem(简单贪心)

    http://acm.hdu.edu.cn/showproblem.php?pid=5055 题目大意: 给你N位数,每位数是0~9之间.你把这N位数构成一个整数. 要求: 1.必须是奇数 2.整数的 ...

  2. [转]spring_bean的属性

    1.parent 表示继承的父类 如果有很多继承同一个父类的BEAN 那么在配置文件中实例那些BEAN时候可以省略掉父类已经注入的属性 bean定义继承父bean定义,它可以覆盖父bean的一些值,或 ...

  3. 飞机大战编写以及Java的面向对象总结

    面向对象课程完结即可编写一个简单的飞机大战程序.我觉得我需要总结一下 飞机大战中类的设计: 父类:FlyingObject(抽象类) 接口:Award .Enemy 子类:Hero.Bullet.Ai ...

  4. mysql 触发器示例和注解

    -- 格式 CREATE TRIGGER 触发器名称 AFTER|before insert|update|delete ON 触发表 FOR EACH ROW BEGIN insert into 处 ...

  5. Python字符串格式化

    一.使用格式化符来格式化字符串: Python支持的所有格式化符 格式化符 意义 'd' 返回要格式化对象的十进制表示,如果可以 'i' 返回要格式化对象的十进制表示,如果可以 'o' 返回要格式化对 ...

  6. Python练习,网络小爬虫(初级)

    最近还在看Python版的rcnn代码,附带练习Python编程写一个小的网络爬虫程序. 抓取网页的过程其实和读者平时使用IE浏览器浏览网页的道理是一样的.比如说你在浏览器的地址栏中输入    www ...

  7. Good Bye 2015 D. New Year and Ancient Prophecy

    D. New Year and Ancient Prophecy time limit per test 2.5 seconds memory limit per test 512 megabytes ...

  8. QT 中文显示问题

    在QT4 中,要显示中文,都是要这样写: #include <QTextCodec> QTextCodec::setCodecForTr(QTextCodec::codecForLocal ...

  9. JQUERY PLUGIN:BARCODE条形码插件

    1)query.barcode.js安装 同其他jquery插件一样,只需要将jquery框架和jquery.barcode.js导入页面即可. <script type="text/ ...

  10. UITableView heightForHeaderInSection遇到的坑

    出现这种现象只需要把 heightforfoot改为0.01 - (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSectio ...