2.4.10 可展开的列表组件

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <ExpandableListView
        android:id="@+id/expandableListView1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >
    </ExpandableListView>

</LinearLayout>
package com.moon.hello2;

import java.util.ArrayList;
import java.util.Calendar;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import android.R.anim;
import android.R.integer;
import android.app.Activity;
import android.database.DataSetObserver;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.Gravity;
import android.view.Menu;
import android.view.View;
import android.view.ViewGroup;
import android.view.View.OnClickListener;
import android.widget.AbsListView;
import android.widget.ArrayAdapter;
import android.widget.AutoCompleteTextView;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.ExpandableListAdapter;
import android.widget.ExpandableListView;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.ProgressBar;
import android.widget.RatingBar;
import android.widget.SimpleAdapter;
import android.widget.RatingBar.OnRatingBarChangeListener;
import android.widget.SeekBar;
import android.widget.DatePicker.OnDateChangedListener;
import android.widget.SeekBar.OnSeekBarChangeListener;
import android.widget.TabHost;
import android.widget.TextView;
import android.widget.TimePicker;
import android.widget.TimePicker.OnTimeChangedListener;

public class MainActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        this.setContentView(R.layout.activity_main);
        ExpandableListView listView = (ExpandableListView)findViewById(R.id.expandableListView1);
        ExpandableListAdapter adapter = new ExpandableListAdapter() {
            private String[] armTypeStrings = new String[]{"神族","人族","虫族"};
            private String[][] armStrings = new String[][]{{"狂战士","龙骑士","黑暗圣堂","电兵"},{"小狗","刺蛇","飞龙","自爆飞机"},{"机枪兵","护士MM","幽灵"}};
            @Override
            public void unregisterDataSetObserver(DataSetObserver arg0) {
                // TODO Auto-generated method stub

            }

            @Override
            public void registerDataSetObserver(DataSetObserver arg0) {
                // TODO Auto-generated method stub

            }

            @Override
            public void onGroupExpanded(int arg0) {
                // TODO Auto-generated method stub

            }

            @Override
            public void onGroupCollapsed(int arg0) {
                // TODO Auto-generated method stub

            }

            @Override
            public boolean isEmpty() {
                // TODO Auto-generated method stub
                return false;
            }

            @Override
            public boolean isChildSelectable(int arg0, int arg1) {
                // TODO Auto-generated method stub
                return true;
            }

            @Override
            public boolean hasStableIds() {
                // TODO Auto-generated method stub
                return true;
            }

            @Override
            public View getGroupView(int groupPosition, boolean arg1, View arg2, ViewGroup arg3) {
                // TODO Auto-generated method stub
                LinearLayout linearLayout = new LinearLayout(MainActivity.this);
                linearLayout.setOrientation(LinearLayout.HORIZONTAL);
                TextView textView = this.getTextView();
                textView.setText(this.getGroup(groupPosition).toString());
                linearLayout.addView(textView);
                return linearLayout;
            }

            @Override
            public long getGroupId(int groupPosition) {
                // TODO Auto-generated method stub
                return groupPosition;
            }

            @Override
            public int getGroupCount() {
                // TODO Auto-generated method stub
                return this.armTypeStrings.length;
            }

            @Override
            public Object getGroup(int groupPosition) {
                // TODO Auto-generated method stub
                return this.armTypeStrings[groupPosition];
            }

            @Override
            public long getCombinedGroupId(long arg0) {
                // TODO Auto-generated method stub
                return 0;
            }

            @Override
            public long getCombinedChildId(long arg0, long arg1) {
                // TODO Auto-generated method stub
                return 0;
            }

            @Override
            public int getChildrenCount(int groupPosition) {
                // TODO Auto-generated method stub
                return this.armStrings[groupPosition].length;
            }

            @Override
            public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView,
                    ViewGroup parent) {
                TextView textView = this.getTextView();
                textView.setText(this.getChild(groupPosition, childPosition).toString());
                return textView;
            }

            @Override
            public long getChildId(int arg0, int arg1) {
                // TODO Auto-generated method stub
                return 0;
            }

            @Override
            public Object getChild(int groupPostion, int childPosition) {
                // TODO Auto-generated method stub
                return this.armStrings[groupPostion][childPosition];
            }

            @Override
            public boolean areAllItemsEnabled() {
                // TODO Auto-generated method stub
                return false;
            }

            private TextView getTextView(){
                TextView textView = new TextView(MainActivity.this);
                AbsListView.LayoutParams layoutParams = new AbsListView.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, 64);
                textView.setLayoutParams(layoutParams);
                textView.setGravity(Gravity.CENTER_VERTICAL);
                textView.setPadding(36, 0, 0, 0);
                textView.setTextSize(20);
                return textView;
            }
        };
        listView.setAdapter(adapter);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

}

getChildView 返回子列表中的单个view

getGroupView 返回单个group的view(不展开时候的那个)

childCount 返回某个group下边的子元素数目

groupCount 返回所有的group数目

时间: 2024-10-29 19:08:18

2.4.10 可展开的列表组件的相关文章

ExpandableListView(可展开的列表组件)的说明以及其用法

ExpandableListView的用法和ListView非常像,只是其所显示的列表项应该由ExpandableListAdapter提供,下面是它的xml属性及说明: 然而,接下来是用事实说话了: -------------------------------------------------------------------------------- 1.该项目的布局文件非常简单,和ListView差不多,此处就不贴出代码了. 2.ExpandableListViewActivity.

关于安卓开发实现可展开的列表组件

三个布局文件 main.xml      childs.xml      groups.xml 一个java文件  List_lianxi.java main.xml文件代码 1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 android:la

列表组件概述(转)

全文转至:http://www.cnblogs.com/lyzg/ 这次要介绍的是列表组件.为了写它,我花了有将近2周的晚上,才一点一点的把它写到现在这个程度.到目前为止,一共写了有17个文件,虽然没有覆盖到一些更复杂的场景,但是把我当时计划写这个组件的基本目的已经完成了.先给大家看看我最后写出来的文件情况: 也许有人会好奇,一个列表的功能怎么会写出这么多东西出来?关于这个问题的答案,我稍后再来总结,先让我描述下我写这些东西之前产生的想法. 1. 背景介绍 我是去年5月份在上家公司开始做的前端开

微信小程序 - 展开收缩列表

代码源自于:微信小程序示例官方 index.wxml 1 <block wx:for-items="{{list}}" wx:key="{{item.id}}"> 2 <view class="kind-list-item"> 3 <view id="{{item.id}}" class="kind-list-item-hd {{item.open ? 'kind-list-item-h

【转】 HVTableView创建--展开/折叠列表能 AAShareBubbles社会分享动画组

原文: http://blog.csdn.net/billfanggs/article/details/17279969 HVTableView HVTableView是UITableView(带有展开/折叠功能)的子集,可以方便地用在很多app中.开发者可以使用展开/折叠列表而 不用为每个单元格创建一个详细的viewController,从而节省开发时间.这意味着每个单元格的详细信息可以即刻展示在表格中,而不用切换至另外 一个视图才能查看详细信息. 附件: /cms/uploads/soft/

基于iView的列表组件封装

封装的好处多多,代码便于维护.减少代码量.减少BUG 前台封装以前没有尝试过,这回试试,哈哈 目录 1.列表组件封装 2.树组件封装 3.下拉框组件封装 4.上传组件封装 列表组件的API  属性 说明 类型 默认值  url 请求列表数据的地址 必填  String 无 pagingOption 列表底部是否显示分页信息及总数,有两个配置项 showPaging.showTotal Object 显示分页及总数信息 cols 列定义 必填 Array 无 height 列表高度 选填 Numb

ReactNative: 使用列表组件ListView组件

一.简介 在前面介绍过了FlatList列表组件用来展示大量的数据,ListView组件也是同样地功能.虽然ListView组件已经过时,但是作为新手还是有必要了解一下.它们的API差不太多,但是ListView组件使用起来确实要比FlatList列表组件复杂一下.ListView组件是一个垂直滚动列表组件,继承自ScrollView组件,拥有ScrollView组件的全部属性.该组件用简单的数据blob数组填充它,并使用该数据源和`renderRow`回调实例化一个`ListView`组件.

bootstrap 之 列表组件使用

列表是几乎所有网站都会用到的一个组件,正好bootstrap也给我们提供了这个组件的样式,下面我给大家简单介绍一下bootstrap中的列表组件的用法! 首先,重提一下引用bootstrap的核心文件的问题,以免有些刚入手的朋友忘了这个. 在页面的开头,先引用bootstrap的核心文件(css,js)等. <!-- 新 Bootstrap 核心 CSS 文件 --> <link rel='stylesheet' href='css/bootstrap.min.css' /> &l

列表组件抽象(4)-滚动列表及分页说明

这是我写的关于列表组件的第4篇博客.前面的相关文章有: 1. 列表组件抽象(1)-概述 2. 列表组件抽象(2)-listViewBase说明 3. 列表组件抽象(3)-分页和排序管理说明 本文介绍列表组件中我对滚动列表及滚动分页的实现思路. 在pc端,通过滚动进行翻页的需求非常常见:移动端也是,只不过移动端由于scroll事件触发有延迟,必须等到屏幕停止滑动后才会触发,而不是在用户的手指离开屏幕就立即触发,所以移动端最好是不用scroll事件直接做滚动翻页,而是用iscroll这类插件提供更实