ExpandableListView说明及其用法

本文介绍了Android中的ExpandableListView组件,包括其xml属性如childDivider和groupIndicator,以及如何从网络请求数据并存储到数据库,然后使用Bean类和biz层处理数据展示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一:ExpandableListView
ExpandableListView,是可展开的列表组件的ExpandableListView的用法和ListView非常像,只是其所显示的列表项应该由ExpandableListAdapter提供,下面是它的xml属性及说明:

  1. childDivider:指定各组内子项列表项之间的分割条
  2. childIndicator:显示在子列表项旁边的Drawable对象
  3. groupIndicator:显示在组列表项旁边的Drawable对象

二:效果

在这里插入图片描述
三:使用
第一步:新建包,列表中显示的数据是从网络请求过来,并且插入到数据库中
在这里插入图片描述
1.Android开发中使用Bean类最多的场景是从网络获取数据,将数据以Bean类组织,Bean类中的数据用于填充UI界面中的控件。此处使用Bean类主要是组织数据方便,便于将其中的数据填充到控件中。

2.biz是Business的缩写,实际上就是控制层,控制层的主要作用就是协调model层和view层直接的调用和转换。能够有效的避免请求直接进行数据库内容调用,而忽略了逻辑处理的部分。实际上biz就起到了一个server服务的角色,很好的沟通了上层和下层直接的转换,避免在model层进行业务处理(代码太混乱,不利于维护)

第二步:代码编写

1.Chapter.java

package com.hanjie.expandablelistview2.bean;import java.util.ArrayList;
import java.util.List;public class Chapter {
   private int id;
    private String name;public static final String TABLE_NAME = "tb_chapter";
    public static final String COL_ID = "_id";
    public static final String COL_NAME = "name";private List<ChapterItem> children = new ArrayList<>();public Chapter() {
   
    }public Chapter(int id, String name) {
   
        this.name = name;
        this.id = id;
    }public String getName() {
   
        return name;
    }public void setName(String name) {
   
        this.name = name;
    }public List<ChapterItem> getChildren() {
   
        return children;
    }public void addChild(ChapterItem child) {
   
        children.add(child);
        child.setPid(getId());
    }public void addChild(int id, String childName) {
   
        ChapterItem chapterItem = new ChapterItem(id, childName);
        chapterItem.setPid(getId());
        children.add(chapterItem);
    }public int getId() {
   
        return id;
    }public void setId(int id) {
   
        this.id = id;
    }}2.ChapterItem.java

package com.hanjie.expandablelistview2.bean;
​
​
​
public class ChapterItem {
   
    private int id;
    private String name;
    private int pid;public static final String TABLE_NAME = "tb_chapter_item";
    public static final String COL_ID = "_id";
    public static final String COL_PID = "pid";
    public static final String COL_NAME = "name";public ChapterItem() {
   
    }public ChapterItem(int id, String name) {
   
        this.name = name;
        this.id = id;
    }public int getId() {
   
        return id;
    }public int getPid() {
   
        return pid;
    }public void setPid(int pId) {
   
        this.pid = pId;
    }public void setId(int id) {
   
        this.id = id;
    }public String getName() {
   
        return name;
    }public void setName(String name) {
   
        this.name = name;
    }
}3.ChapterLab.java

package com.hanjie.expandablelistview2.bean;import java.util.ArrayList;
import java.util.List;
​
​
​
public class ChapterLab {
   public static List<Chapter> generateDatas() {
   
​
        List<Chapter> chapters = new ArrayList<>();
​
​
        Chapter root1 = new Chapter(1, "Android");
        Chapter root2 = new Chapter(2, "IOS");
        Chapter root3 = new Chapter(3, "Unity 3D");
        Chapter root4 = new Chapter(4, "Cocos2d-x");
​
        root1.addChild(1, "PullToRefresh");
        root1.addChild(2, "Android 8.0通知栏解决方案");
        root1.addChild(4, "Android 与WebView的js交互");
        root1.addChild(8, "Android UiAutomator 2.0 入门实战");
        root1.addChild(10, "移动端音频视频入门");
​
        root2.addChild(11, "iOS开发之LeanCloud");
        root2.addChild(12, "iOS开发之传感器");
        root2.addChild(13, "iOS开发之网络协议");
        root2.addChild(14, "iOS之分享集成");
        root2.addChild(15, "iOS之FTP上传");
​
​
        root3.addChild(16, "Unity 3D 翻牌游戏开发");
        root3.addChild(17, "Unity 3D基础之变体Transform");
        root3.addChild(20, "带你开发类似Pokemon Go的AR游戏");
        root3.addChild(21, "Unity 3D游戏开发之脚本系统");
        root3.addChild(22, "Unity 3D地形编辑器");
​
​
        root4.addChild(25, "Cocos2d-x游戏之七夕女神抓捕计划");
        root4.addChild(26, "Cocos2d-x游戏开发初体验-C++篇");
        root4.addChild(27, "Cocos2d-x全民俄罗斯");
        root4.addChild(28, "Cocos2d-x坦克大战");
        root4.addChild(30, "新春特辑-Cocos抢红包");
​
​
        chapters.add(root1);
        chapters.add(root2);
        chapters.add(root3);
        chapters.add(root4);return chapters;
    }}4.ChapterBiz.java

package com.hanjie.expandablelistview2.biz;import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.AsyncTask;
import android.os.Handler;
import android.os.Looper;
import android.util.Log;
​
​
import com.hanjie.expandablelistview2.bean.Chapter;
import com.hanjie.expandablelistview2.bean.ChapterItem;
import com.hanjie.expandablelistview2.dao.ChapterDao;
import 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值