【Android】树形菜单、扩展下拉菜单BaseExpandableListAdapter、AbsListView

先看效果~

 

也就是BaseExpandableListAdapter、AbsListView类的使用,就不多说了..大牛留情...

就两个类。

ExpandLabel:

package com.yfz; import java.util.ArrayList; import java.util.List; import android.app.Activity; import android.os.Bundle; import android.view.ViewGroup.LayoutParams; import android.widget.ExpandableListView; import android.widget.ViewFlipper; public class ExpandLabel extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); // 数据源 //标题 List<String> groupArray = new ArrayList<String>(); //子标题 List<List<String>> childArray = new ArrayList<List<String>>(); groupArray.add("第一章"); groupArray.add("第二章"); List<String> tempArray01 = new ArrayList<String>(); tempArray01.add("第1.1节"); tempArray01.add("第1.2节"); tempArray01.add("第1.3节"); List<String> tempArray02 = new ArrayList<String>(); tempArray02.add("第2.1节"); tempArray02.add("第2.2节"); tempArray02.add("第2.3节"); childArray.add(tempArray01); childArray.add(tempArray02); ExpandableListView expandableListView = new ExpandableListView(this); ExpandableAdapter adapter = new ExpandableAdapter(this,groupArray,childArray); expandableListView.setAdapter(adapter); addContentView(expandableListView, new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT)); } }

树形菜单类,只要传两个List过来就可以直接使用了。

groupArray:表示一级菜单

childArray: 表示二级菜单

二级菜单相当于一个二维List,该List中存储的每个元素都是一个List。第一个元素对应一级菜单中第一个菜单的子项List,第二个元素对应一级菜单中第二个菜单的子项List,依次类推。

ExpandableAdapter:

package com.yfz; import java.util.ArrayList; import java.util.List; import android.app.Activity; 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<String>> childArray; private Activity activity; public ExpandableAdapter(Activity a,List<String> groupArray,List<List<String>> childArray) { activity = a; 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); return getGenericView(string); } @Override public int getChildrenCount(int groupPosition) { // TODO Auto-generated method stub return 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.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); } @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 false; } /****************************************以下为自定义方法*********************************************/ /** * Children 's View * @param string * @return */ public TextView getGenericView(String string) { AbsListView.LayoutParams layoutParams = new AbsListView.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT, 64); TextView text = new TextView(activity); text.setLayoutParams(layoutParams); // Center the text vertically text.setGravity(Gravity.CENTER_VERTICAL | Gravity.LEFT); // Set the text starting position text.setPadding(36, 0, 0, 0); text.setText(string); return text; } }

转载于:https://www.cnblogs.com/feng88724/archive/2011/01/30/1961240.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值