Android 之路43---手风琴特效ExpandableListView

导读

1.简介
2.手风琴本地数据实现
3.手风琴数据库数据实现
4.手风琴网络数据实现

简介

这里写图片描述

这里写图片描述

手风琴本地数据实现

这里写图片描述

配置文件 AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.hala.view01">

<uses-permission android:name="android.permission.INTERNET"/>
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".Main2Activity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

主页面布局文件 activity_main2.xml

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.hala.view01.Main2Activity">

    <ExpandableListView
        android:id="@+id/elv"
        android:layout_width="368dp"
        android:layout_height="495dp"
        android:groupIndicator="@null">
        <!--groupIndicator用于设置条目左侧的图标,null为没有,不设置为下拉箭头-->

    </ExpandableListView>

</android.support.constraint.ConstraintLayout>

组的布局文件 item_elv_group.xml

<?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:gravity="center">

    <TextView
        android:id="@+id/txt_group"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="权利的游戏"
        android:textSize="28sp"
        android:textColor="#423f4d"/>

</LinearLayout>

子条目的布局文件 item_elv_child.xml

<?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:gravity="center"
    android:orientation="vertical">

    <TextView
        android:id="@+id/txt_child_name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="血色婚礼"
        android:textSize="20sp"
        android:textColor="#d69842"
        android:paddingLeft="30dp"/>

    <TextView
        android:id="@+id/txt_child_learner"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="2222"
        android:textSize="20sp"
        android:textColor="#d69842"
        android:paddingLeft="30dp"/>

</LinearLayout>

本地数据文件 LocalData.java

package com.hala.view01;

import java.util.ArrayList;
import java.util.List;

/**
 * Created by air on 2018/3/6.
 */

public class LocalData {
   

    /**
     * 获取列表组的数据
     * @return
     */
    public static List<String> getGroupData(){
        List<String> groups=new ArrayList<String>();
        groups.add("权利的游戏第一季");
        groups.add("权利的游戏第二季");
        return groups;
    }

    /**
     * 获取子条目的数据
     * @return
     */
    public static List<List<String>> getChildData(){
        List<List<String>> childs= new ArrayList<List<String>>() ;


        List<String> item1=new ArrayList<String>();
        item1.add("龙的诞生");
        item1.add("耐得史塔克之死");
        childs.add(item1);

        List<String> item2=new ArrayList<String>();
        item1.add("红袍女的出现");
        item1.add("少狼主起兵");
        item2.add("弑君者被抓");

        childs.add(item2);
        return childs;
    }

    public static List<List<Course>> getChildDataFromNet(List<Course> courses){
        List<List<Course>> childs=new ArrayList<List<Course>>();
        childs.add(courses);
        return childs;
    }
}

基础适配器文件 MyBaseAdapter.java

package com.hala.view01;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseExpandableListAdapter;

import java.util.List;

/** 基础适配器
 * Created by air on 2018/3/6.
 */

public abstract class MyBaseAdapter<T> extends BaseExpandableListAdapter {
   

    private List<String> groups;
    private List<List<T>> childs;
    Context mcontext;
    LayoutInflater mlayoutInflater;

    public MyBaseAdapter(Context context){
        mcontext=context;
        mlayoutInflater=LayoutInflater.from(mcontext);

    }


    public void addNewData(List<String> groups,List<List<T>> childs){
        this.groups=groups;
        this.childs=childs;

    }


    /**
     * 获取组的数量
     * @return
     */
    @Override
    public int getGroupCount() {
        return groups.size();
    }

    /**
     * 获取组的id
     * @param groupPosition 组的位置
     * @return
     */
    @Override
    public long getGroupId(int groupPosition) {
        return 0;
    }

    /**
     * 获取组的视图
     * @param groupPosition 组的位置
     * @param isExpanded 组是否是展开的
     * @param convertView 视图
     * @param parent 环境
     * @return
     */
    @Override
    public View getGroupView(int groupPosition, boolean isExpanded, View convertView
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值