android BaseExpandableListAdapter 二级菜单适配器

本文介绍了如何在Android开发中使用BaseExpandableListAdapter创建二级菜单适配器,通过自定义适配器实现更加灵活的布局和交互效果。
摘要由CSDN通过智能技术生成

android BaseExpandableListAdapter 二级菜单适配器

activity_main.xml

<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" >

    <ExpandableListView
        android:id="@+id/home_a_list"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_below="@id/ll_title"
        android:childDivider="#EEEEEE"
        android:divider="#c8c7cc"
        android:dividerHeight="1dp"
        android:gravity="center"
        android:groupIndicator="@null"
        android:listSelector="#00000000" />

</RelativeLayout>
MainActivity .java
package com.zcycjy.mobile.fragment;

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

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.ExpandableListView;
import android.widget.ExpandableListView.OnChildClickListener;
import android.widget.ExpandableListView.OnGroupExpandListener;

import com.zcycjy.mobile.R;
import com.zcycjy.mobile.adapter.ExpandableAdapter;
import com.zcycjy.mobile.entity.HomeType;

/**
 * @author itps
 * 
 */
public class MainActivity extends Activity {

	// 标题
	private List<String> groupArray = new ArrayList<String>();
	// 子标题
	private List<List<HomeType>> childArray = new ArrayList<List<HomeType>>();
	private ExpandableAdapter adapters;
	private ExpandableListView expandableListView;

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		getDatas(0);
		
		initView();
	}

	private void initView() {
		expandableListView = (ExpandableListView)findViewById(R.id.home_a_list);
		adapters = new ExpandableAdapter(this, groupArray, childArray);
		expandableListView.setAdapter(adapters);

		expandableListView.setOnChildClickListener(new OnChildClickListener() {

			@Override
			public boolean onChildClick(ExpandableListView parent, View v,
					int groupPosition, int childPosition, long id) {
				// TODO Auto-generated method stub
				HomeType ht = (HomeType) adapters.getChild(groupPosition,
						childPosition);
				return false;
			}
		});
		expandableListView
				.setOnGroupExpandListener(new OnGroupExpandListener() {

					@Override
					public void onGroupExpand(int groupPosition) {
						for (int i = 0; i < groupArray.size(); i++) {
							if (groupPosition != i) {
								expandableListView.collapseGroup(i);
							}
						}
					}
				});
	}

	private void getDatas(int type) {
		// 会计
		groupArray.add("注册会计师");
		List<HomeType> ta1 = new ArrayList<HomeType>();
		ta1.add(new HomeType("会计", "000001"));
		ta1.add(new HomeType("审计", "000002"));
		ta1.add(new HomeType("财务成本管理", "000003"));
		ta1.add(new HomeType("税法", "000004"));
		ta1.add(new HomeType("经济法", "000005"));
		ta1.add(new HomeType("公司战略与风险管理", "000006"));
		groupArray.add("高级会计职称");
		List<HomeType> ta2 = new ArrayList<HomeType>();
		ta2.add(new HomeType("高级会计实务", "000011"));
		groupArray.add("中级会计职称");
		List<HomeType> ta3 = new ArrayList<HomeType>();
		ta3.add(new HomeType("中级会计实务", "000021"));
		ta3.add(new HomeType("中级经济法", "000022"));
		ta3.add(new HomeType("中级财务管理", "000023"));

		childArray.add(ta1);
		childArray.add(ta2);
		childArray.add(ta3);
	}

}
ExpandableAdapter .java
package com.zcycjy.mobile.adapter;

import java.util.List;

import com.zcycjy.mobile.entity.HomeType;

import android.app.Activity;
import android.graphics.Color;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AbsListView;
import android.widget.BaseExpandableListAdapter;
import android.widget.TextView;

public class ExpandableAdapter extends BaseExpandableListAdapter {

	private List<String> groupArray;
	private List<List<HomeType>> childArray;
	private Activity activity;

	public ExpandableAdapter(Activity act, List<String> groupArray,
			List<List<HomeType>> childArray) {
		this.activity = act;
		this.groupArray = groupArray;
		this.childArray = childArray;
	}

	@Override
	public Object getChild(int groupPosition, int childPosition) {
		// TODO Auto-generated method stub
		return childArray.get(groupPosition).get(childPosition);
	}

	@Override
	public long getChildId(int groupPosition, int childPosition) {
		// TODO Auto-generated method stub
		return childPosition;
	}

	@Override
	public View getChildView(int groupPosition, int childPosition,
			boolean isLastChild, View convertView, ViewGroup parent) {
		// TODO Auto-generated method stub
		String string = childArray.get(groupPosition).get(childPosition)
				.getTypeName();
		return getGenericView(string, 1);
	}

	@Override
	public int getChildrenCount(int groupPosition) {
		// TODO Auto-generated method stub
		return childArray == null ? 0 : childArray.get(groupPosition).size();
	}

	@Override
	public Object getGroup(int groupPosition) {
		// TODO Auto-generated method stub
		return groupArray.get(groupPosition);
	}

	@Override
	public int getGroupCount() {
		// TODO Auto-generated method stub
		return groupArray == null ? 0 : groupArray.size();
	}

	@Override
	public long getGroupId(int groupPosition) {
		// TODO Auto-generated method stub
		return groupPosition;
	}

	@Override
	public View getGroupView(int groupPosition, boolean isExpanded,
			View convertView, ViewGroup parent) {
		// TODO Auto-generated method stub
		String string = groupArray.get(groupPosition);
		return getGenericView(string, 0);
	}

	@Override
	public boolean hasStableIds() {
		// TODO Auto-generated method stub
		return false;
	}

	@Override
	public boolean isChildSelectable(int groupPosition, int childPosition) {
		// TODO Auto-generated method stub
		return true;
	}

	/**
	 * Children 's View
	 * 
	 * @param string
	 * @return
	 */
	public TextView getGenericView(String string, int i) {
		AbsListView.LayoutParams layoutParams = new AbsListView.LayoutParams(
				ViewGroup.LayoutParams.MATCH_PARENT,
				ViewGroup.LayoutParams.WRAP_CONTENT);
		TextView text = new TextView(activity);
		text.setLayoutParams(layoutParams);
		// Center the text vertically
		text.setGravity(Gravity.CENTER_VERTICAL | Gravity.LEFT);
		// Set the text starting position
		if (i == 1) {
			text.setTextColor(Color.parseColor("#000000"));
			text.setPadding(70, 10, 0, 10);
			text.setText(string + " >>>");
		} else {
			text.setTextColor(Color.parseColor("#F39801"));
			text.setPadding(40, 20, 0, 20);
			text.setText(string + " ▼▼▼");
		}
		return text;
	}
}





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值