这个东西用法基本固定,不知道能不能做三级的展开。

界面代码

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ExpandableListView
android:id="@+id/list"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:childIndicator="@mipmap/ic_launcher"
android:childIndicatorStart="380dp"
android:childIndicatorEnd="410dp"/>
</LinearLayout>

主程序代码

package com.example.expandablelistview

import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import android.view.Gravity
import android.view.View
import android.view.ViewGroup
import android.widget.* class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main) val adapter = object:BaseExpandableListAdapter()
{
internal var logos = intArrayOf(R.drawable.p, R.drawable.z, R.drawable.t)
private val armTypes = arrayOf("神族兵种", "虫族兵种", "人族兵种")
private val arms = arrayOf(arrayOf("狂战士", "龙骑士", "黑暗圣堂", "电兵"),
arrayOf("小狗", "刺蛇", "飞龙", "自爆飞机"),
arrayOf("机枪兵", "护士MM", "幽灵"))
private val textView: TextView
get()
{
val textView = TextView(this@MainActivity)
val lp = AbsListView.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.WRAP_CONTENT)
textView.layoutParams = lp
textView.gravity = Gravity.CENTER_VERTICAL or Gravity.START
textView.setPadding(36, 10, 0, 10)
textView.textSize = 20f
return textView
}
// 获取指定组位置、指定子列表项处的子列表项数据
override fun getChild(groupPosition: Int, childPosition: Int): Any
{
return arms[groupPosition][childPosition]
} override fun getChildId(groupPosition: Int, childPosition: Int): Long
{
return childPosition.toLong()
} override fun getChildrenCount(groupPosition: Int): Int
{
return arms[groupPosition].size
} // 该方法决定每个子选项的外观
override fun getChildView(groupPosition: Int, childPosition: Int,
isLastChild: Boolean, convertView: View?, parent: ViewGroup): View
{
val textView: TextView
if (convertView == null)
{
textView = this.textView
textView.text = getChild(groupPosition, childPosition).toString()
}
else
{
textView = convertView as TextView
}
return textView
} // 获取指定组位置处的组数据
override fun getGroup(groupPosition: Int): Any
{
return armTypes[groupPosition]
} override fun getGroupCount(): Int
{
return armTypes.size
} override fun getGroupId(groupPosition: Int): Long
{
return groupPosition.toLong()
} // 该方法决定每个组选项的外观
override fun getGroupView(groupPosition: Int, isExpanded: Boolean,
convertView: View?, parent: ViewGroup): View
{
val ll: LinearLayout
if (convertView == null)
{
ll = LinearLayout(this@MainActivity)
ll.orientation = LinearLayout.HORIZONTAL
val logo = ImageView(this@MainActivity)
logo.setImageResource(logos[groupPosition])
ll.addView(logo)
val textView = this.textView
textView.text = getGroup(groupPosition).toString()
ll.addView(textView)
}
else
{
ll = convertView as LinearLayout
}
return ll
} override fun isChildSelectable(groupPosition: Int, childPosition: Int): Boolean
{
return true
} override fun hasStableIds(): Boolean
{
return true
}
}
val expandListView = findViewById<ExpandableListView>(R.id.list)
expandListView.setAdapter(adapter)
}
}

expandablelistView 可展开的列表的更多相关文章

  1. 可展开的列表组件——ExpandableListView深入解析

    可展开的列表组件--ExpandableListView深入解析 一.知识点 1.ExpandableListView常用XML属性 2.ExpandableListView继承BaseExpanda ...

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

    原文: http://blog.csdn.net/billfanggs/article/details/17279969 HVTableView HVTableView是UITableView(带有展 ...

  3. android之ExpandableListView 无法展开

    1.Button 对,没错,就是这个button组件,不知道出现都少次过问题,很多都是它造成的! 最常见的问题:ExpandableListView无法展开,OnItemClickListener不响 ...

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

    代码源自于:微信小程序示例官方 index.wxml <block wx:for-items="{{list}}" wx:key="{{item.id}}" ...

  5. (转载)自定义ExpandableListView,实现二级列表效果

    先看效果图: 上图是我们要实现的效果,那么现在我们开始着手去做,主要分为以下几步: 一丶我们需要根据效果图去思考该如何动手,从上图分析看,我们可以用一个相对布局RelativeLayout来完成gro ...

  6. 【深入篇】自定义ExpandableListView,实现二级列表效果

    先看效果图: 上图是我们要实现的效果,那么现在我们开始着手去做,主要分为以下几步: 一丶我们需要根据效果图去思考该如何动手,从上图分析看,我们可以用一个相对布局RelativeLayout来完成gro ...

  7. Python代码阅读(第11篇):展开嵌套列表

    Python 代码阅读合集介绍:为什么不推荐Python初学者直接看项目源码 本篇阅读的代码实现了展开嵌套列表的功能,将一个嵌套的list展开成一个一维list(不改变原有列表的顺序). 本篇阅读的代 ...

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

    ExpandableListView的用法和ListView非常像,只是其所显示的列表项应该由ExpandableListAdapter提供,下面是它的xml属性及说明: 然而,接下来是用事实说话了: ...

  9. ExpandableListView实现展开更多和收起更多

    [需求]: 如上面图示 当点开某个一级菜单的时候,其他菜单收起: 子级菜单默认最多5个: 多于5个的显示"展开更多" 点击"展开更多",展开该级所有子级菜单,同 ...

随机推荐

  1. linux 非root用户安装nginx

    第一步:首先下载依赖包 下载地址 pcre(www.pcre.org),zlib(www.zlib.org),openssl(www.openssl.org) 第二步:上传那个nginx的安装包 下载 ...

  2. 创建数据库表时,如何设置mysql中时间的默认值

    应用场景: 1.在数据表中,要记录每条数据是什么时候创建的,不需要应用程序去特意记录,而由数据数据库获取当前时间自动记录创建时间: 2.在数据库中,要记录每条数据是什么时候修改的,不需要应用程序去特意 ...

  3. MQ的面试题

    MQ的优点和缺点? 优点:解耦 异步,削峰 解耦: 所以需要用来解耦: 异步: 解决方法: 削峰: 解决方法是: 缺点:降低高可用性.增加系统的复杂程度.一致性问题 降低高可用的原因:系统引入的外部依 ...

  4. 【Java】《Java程序设计基础教程》第三章学习

    3.1 类 类在Java语言中是一种最基本的引用数据类型,是组成Java程序的基本要素.具有相同属性(状态)和方法(行为)的一组对象的集合称为类,其内部包括属性和方法两个主要部分. 3.11 类的定义 ...

  5. 国产MM才叫漂亮[景甜]

  6. Spring源码窥探之:ImportBeanDefinitionRegistrar

    1. 编写实现ImportBeanDefinitionRegistrar的类 /** * description * * @author 70KG * @date 2018/11/13 */ publ ...

  7. 透析C/S和B/S结构

    C/S又称Client/Server或客户/服务器模式.服务器通常采用高性能的PC.工作站或小型机,并采用大型数据库系统,如Oracle.Sybase.Informix或 SQL Server.客户端 ...

  8. windows nginx 目录配置

    http { server { listen 80; server_name www.test.com; location / { root E:/data/www; index index.html ...

  9. js正则验证input输入框有空格时提示直接去除空格

    <input type="text" id="test"/> <input type="button" value=&qu ...

  10. spring boot 集成 redis lettuce(jedis)

    spring boot框架中已经集成了redis,在1.x.x的版本时默认使用的jedis客户端,现在是2.x.x版本默认使用的lettuce客户端 引入依赖 <!-- spring boot ...