您的位置:首页 > 移动开发 > Android开发

2.10 ExpandableListView(可折叠列表)的基本使用

2016-10-13 17:57 288 查看

一、布局文件

1、新建布局文件:item_exlist_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:orientation="horizontal"
android:padding="5dp"
>

<TextView
android:id="@+id/tv_group_name"
android:layout_width="match_parent"
android:layout_height="56dp"
android:gravity="center_vertical"
android:paddingLeft="30dp"
android:text="AP"
android:textStyle="bold"
android:textSize="20sp"
/>

</LinearLayout>


2、新建布局文件:item_exlist_item.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:orientation="horizontal"
android:padding="5dp"
android:background="#6BBA79"
>

<ImageView
android:id="@+id/img_icon"
android:layout_width="48dp"
android:layout_height="48dp"
android:src="@drawable/avator_smaller"
android:focusable="false"
/>

<TextView
android:id="@+id/tv_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="15dp"
android:layout_marginTop="15dp"
android:focusable="false"
android:text="提莫"
android:textSize="18sp"
/>

</LinearLayout>


3、activity_main.xml 添加如下代码:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">

<ExpandableListView
android:id="@+id/exlist_lol"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:childDivider="#E02D2F"
/>

</RelativeLayout>


Java代码

1、新建java类:Group,添加如下代码

package com.example.yuancan.test1013;

/**
* Created by yuancan on 16/10/13.
*/
public class Group {
private String gName;

public Group() {

}

public Group(String gName) {
this.gName = gName;
}

public void setgName(){
this.gName = gName;
}

public String getgName(){
return gName;
}
}


2、新建java类:Item,添加如下代码:

package com.example.yuancan.test1013;

import android.content.ClipData;

/**
* Created by yuancan on 16/10/13.
*/
public class Item {

private int iId;
private String iName;

public Item (){

}

public Item(int iId,String iName){
this.iId = iId;
this.iName = iName;
}

public void setiId(int iId) {
this.iId = iId;
}

public void setiName(String iName){
this.iName = iName;
}

public int getiId() {
return iId;
}

public String getiName() {
return iName;
}
}


3、新建java类:MyBaseExpandableListAdapter,添加如下代码:

package com.example.yuancan.test1013;

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

import java.util.ArrayList;

/**
* Created by yuancan on 16/10/13.
*/
public class MyBaseExpandableListAdapter extends BaseExpandableListAdapter{

private ArrayList<Group> gData;
private ArrayList<ArrayList<Item>> iData;
private Context mContext;

public MyBaseExpandableListAdapter(ArrayList<Group> gData, ArrayList<ArrayList<Item>> iData, Context mContext){
this.gData = gData;
this.iData = iData;
this.mContext = mContext;
}

@Override
public int getGroupCount() {
return gData.size();
}

@Override
public int getChildrenCount(int groupPosition) {
return iData.get(groupPosition).size();
}

@Override
public Object getGroup(int groupPosition) {
return gData.get(groupPosition);
}

@Override
public Object getChild(int groupPosition, int childPosition) {
return iData.get(groupPosition).get(childPosition);
}

@Override
public long getGroupId(int groupPosition) {
return groupPosition;
}

@Override
public long getChildId(int groupPosition, int childPosition) {
return childPosition;
}

@Override
public boolean hasStableIds() {
return false;
}

@Override
public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {

ViewHolderGroup groupHolder;
if (convertView == null) {
convertView = LayoutInflater.from(mContext).inflate(R.layout.item_exlist_group,parent,false);
groupHolder = new ViewHolderGroup();
groupHolder.tv_group_name = (TextView)convertView.findViewById(R.id.tv_group_name);
convertView.setTag(groupHolder);
}else {
groupHolder = (ViewHolderGroup)convertView.getTag();
}
groupHolder.tv_group_name.setText(gData.get(groupPosition).getgName());

return convertView;
}

@Override
public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {

ViewHolderItem itemHolder;
if (convertView == null) {
convertView = LayoutInflater.from(mContext).inflate(R.layout.item_exlist_item,parent,false);
itemHolder = new ViewHolderItem();
itemHolder.img_icon = (ImageView)convertView.findViewById(R.id.img_icon);
itemHolder.tv_name = (TextView)convertView.findViewById(R.id.tv_name);
convertView.setTag(itemHolder);
}else {
itemHolder = (ViewHolderItem)convertView.getTag();
}
itemHolder.img_icon.setImageResource(iData.get(groupPosition).get(childPosition).getiId());
itemHolder.tv_name.setText(iData.get(groupPosition).get(childPosition).getiName());

return convertView;
}

@Override
public boolean isChildSelectable(int groupPosition, int childPosition) {
return true;
}

private static class ViewHolderGroup{
private TextView tv_group_name;
}

private static class ViewHolderItem{
private ImageView img_icon;
private TextView tv_name;
}
}


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息