ExpandableListView(可折叠Listview)用法(具备下拉刷新、上拉加载功能)

本文介绍了如何自定义一个ExpandableListView,包括屏蔽默认箭头并添加自己的布局,同时实现下拉刷新和上拉加载功能。通过在adapter的getGroupView方法中设置布局,并提供了关键的代码片段,如布局文件(activity_main, parent, child, header, footer)以及相关类(TimeUtil, 子元素对象, 组对象, MyAdapter, MainActivity)。此外,还提供了一个自定义的MyExpandableListView,它是从XListview修改而来,遇到问题可以参考XListview的相关实现。" 52317909,5017817,Android NDK开发与JNI实战,"['Android开发', 'JNI', 'NDK', 'C/C++', '交叉编译']
摘要由CSDN通过智能技术生成

如果想自定义展开箭头,先把默认的屏蔽掉,然后在 adapter 中的 getGroupView 中引用的那个布局里写自己的布局就行


局部效果图
这里写图片描述

工程目录
这里写图片描述

说明:
1、对象A是组对象,对象B,是一个组中一个子元素的对象

代码:
布局:
activity_main

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:layout_width="match_parent"
              android:layout_height="match_parent"
              android:orientation="vertical"
    >

    <TextView
        android:id="@+id/group_num_tv"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:padding="10dp"
        android:textSize="20sp"
        />

    <View
        android:layout_width="match_parent"
        android:layout_height="2dp"
        android:background="#ff0000"/>

    <!--去掉默认箭头-->
    <!--android:groupIndicator="@null"-->
    <!--父item分割线-->
    <!--android:divider="@null"-->
    <!--子item分割线-->
    <!--android:childDivider="@null"-->
    <com.chen.demo.view.MyExpandableListView
        android:id="@+id/expandablelistview"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:childDivider="@null"
        android:divider="@null"
        android:groupIndicator="@null"/>

</LinearLayout>

parent

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:orientation="vertical">

    <TextView
        android:id="@+id/parent_textview"
        android:layout_width="wrap_content"
        android:layout_height="50dp"
        android:layout_marginLeft="15dp"
        android:gravity="center_vertical"/>

    <TextView
        android:id="@+id/child_num_textview"
        android:layout_width="wrap_content"
        android:layout_height="50dp"
        android:layout_alignParentRight="true"
        android:layout_marginRight="15dp"
        android:gravity="center_vertical"/>

    <View
        android:layout_width="match_parent"
        android:layout_height="2dp"
        android:layout_below="@id/parent_textview"
        android:background="#00ff00"/>

</RelativeLayout>

child

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:layout_width="match_parent"
              android:layout_height="match_parent"
              android:orientation="vertical">

    <TextView
        android:id="@+id/child_textview"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:layout_gravity="center"
        android:gravity="center"/>

    <View
        android:layout_width="match_parent"
        android:layout_height="1dp"
        android:background="#0000ff"/>
</LinearLayout>

header

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              xmlns:tools="http://schemas.android.com/tools"
              android:layout_width="match_parent"
              android:layout_height="wrap_content"
              android:gravity="bottom">

    <RelativeLayout
        android:id="@+id/header_content"
        android:layout_width="match_parent"
        android:layout_height="60dp"
        tools:ignore="UselessParent">

        <LinearLayout
            android:id="@+id/header_text_ll"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true"
            android:gravity="center"
            android:orientation="vertical">

            <TextView
                android:id="@+id/header_hint_textview"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="下拉刷新"
                android:textColor="#333333"/>

            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginTop="3dp">

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="最近更新时间:"
                    android:textColor="#333333"
                    android:textSize="12sp"/>

                <TextView
                    android:id="@+id/header_time"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:textColor="#333333"
                    android:textSize="12sp"/>
            </LinearLayout>
        </LinearLayout>

        <ImageView
            android:id="@+id/header_arrow"
            android:layout_width="30dp"
            android:layout_height="wrap_content"
            android:layout_centerVertical="true"
            android:layout_toLeftOf="@id/header_text_ll"
            android:src="@mipmap/arrow"/>

        <ProgressBar
            android:id="@+id/header_progressbar"
            android:layout_width="30dp"
            android:layout_height="30dp"
            android:layout_alignLeft="@id/header_text_ll"
            android:layout_centerVertical="true"
            android:layout_marginLeft="-40dp"
            android:visibility="invisible"/>
    </RelativeLayout>

</LinearLayout>

footer

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android=
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值