android ExpandableListView 四级目录结构
来源:互联网 发布:软件测试基础知识书籍 编辑:程序博客网 时间:2024/05/18 02:21
今天给大家分享 android 的四级树形目录结构,用ExpandableListView 实现
需要用到以下几个类,一个主activity,4个object,3个adapter
下面上源码
主activity 数据加载
package com.hokas.expandablelistview;import android.app.Activity;import android.os.Bundle;import android.util.Log;import android.widget.ExpandableListView;import com.example.hokas.myapplication.R;import java.util.ArrayList;import java.util.List;public class MainActivity extends Activity { private ExpandableListView listView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main2); initViews(); initData(); } /**初始化*/ private void initViews() { listView = (ExpandableListView) findViewById(R.id.listView); } /**加载数据*/ public void initData() { final List<PollcyOne> list = new ArrayList<>(); for (int i = 0; i < 7; i++) { PollcyOne pollcyOne = new PollcyOne(); pollcyOne.content = "一级目录" + (i+1); list.add(pollcyOne); for (int j = 0; j < 3; j++) { PollcyTwo pollcyTwo = new PollcyTwo(); pollcyTwo.content = "二级目录" + (j+1); pollcyOne.pollcyTwos.add(pollcyTwo); for (int k = 0; k < 4; k++) { PollcyThree pollcyThree = new PollcyThree(); pollcyThree.content = "三级目录" + (k+1); pollcyTwo.pollcyThrees.add(pollcyThree); for (int l = 0; l < 3; l++) { PollcyFour pollcyFour = new PollcyFour(); pollcyFour.content = "四级目录" + (l+1); pollcyThree.pollcyFours.add(pollcyFour); } } } } VisitPollcyTwoAdapter adapter = new VisitPollcyTwoAdapter(this,list); listView.setAdapter(adapter); }}
四个object
package com.hokas.expandablelistview;import java.util.ArrayList;import java.util.List;/** * 一级条目 * Created by hokas on 2015/11/4. */public class PollcyOne { public String content; public List<PollcyTwo> pollcyTwos = new ArrayList<>(); @Override public String toString() { return "PollcyOne{" + "content='" + content + '\'' + ", pollcyTwos=" + pollcyTwos + '}'; }}
package com.hokas.expandablelistview;import java.util.ArrayList;import java.util.List;/** * 二级条目 * Created by hokas on 2015/11/4. */public class PollcyTwo { public String content; public List<PollcyThree> pollcyThrees = new ArrayList<>(); @Override public String toString() { return "PollcyTwo{" + "content='" + content + '\'' + ", pollcyThrees=" + pollcyThrees + '}'; }}
package com.hokas.expandablelistview;import java.util.ArrayList;import java.util.List;/** * 三级条目 * Created by hokas on 2015/11/4. */public class PollcyThree { public String content; public List<PollcyFour> pollcyFours = new ArrayList<>(); @Override public String toString() { return "PollcyThree{" + "content='" + content + '\'' + ", pollcyFours=" + pollcyFours + '}'; }}
package com.hokas.expandablelistview;/** * 四级条目 * Created by hokas on 2015/11/4. */public class PollcyFour { public String content; @Override public String toString() { return "PollcyFour{" + "content='" + content + '\'' + '}'; }}
三个adapter
package com.hokas.expandablelistview;import android.content.Context;import android.view.Gravity;import android.view.View;import android.view.ViewGroup;import android.widget.AbsListView;import android.widget.BaseExpandableListAdapter;import android.widget.ExpandableListView;import android.widget.TextView;import java.util.List;/** * 二级级目录 * Created by hokas on 2015/11/4. */public class VisitPollcyTwoAdapter extends BaseExpandableListAdapter { private Context context; private List<PollcyOne> pollcyOnes; public VisitPollcyTwoAdapter(Context context,List<PollcyOne> pollcyOnes) { this.context = context; this.pollcyOnes = pollcyOnes; } @Override public int getGroupCount() { return pollcyOnes.size(); } @Override public int getChildrenCount(int groupPosition) { return pollcyOnes.get(groupPosition).pollcyTwos.size(); } @Override public Object getGroup(int groupPosition) { return pollcyOnes.get(groupPosition); } @Override public Object getChild(int groupPosition, int childPosition) { return pollcyOnes.get(groupPosition).pollcyTwos.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 true; } private TextView getTextView(){ AbsListView.LayoutParams layoutParams = new AbsListView.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,64); TextView textView = new TextView(context); textView.setLayoutParams(layoutParams); textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.LEFT); textView.setPadding(40, 0, 0, 0); textView.setTextSize(20); return textView; } @Override public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) { TextView textView = getTextView(); textView.setText(pollcyOnes.get(groupPosition).content); return textView; } @Override public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) { CustExpListview listView = new CustExpListview(context); VisitPollcyThreeAdapter visitPollcyThreeAdapter = new VisitPollcyThreeAdapter(context,pollcyOnes.get(groupPosition).pollcyTwos); listView.setAdapter(visitPollcyThreeAdapter); listView.setGroupIndicator(null); return listView; } @Override public boolean isChildSelectable(int groupPosition, int childPosition) { return true; } private class CustExpListview extends ExpandableListView { public CustExpListview(Context context) { super(context); } protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { widthMeasureSpec = MeasureSpec.makeMeasureSpec(960, MeasureSpec.AT_MOST); heightMeasureSpec = MeasureSpec.makeMeasureSpec(600, MeasureSpec.AT_MOST); super.onMeasure(widthMeasureSpec, heightMeasureSpec); } }}
package com.hokas.expandablelistview;import android.content.Context;import android.util.Log;import android.view.Gravity;import android.view.View;import android.view.ViewGroup;import android.widget.AbsListView;import android.widget.BaseExpandableListAdapter;import android.widget.ExpandableListView;import android.widget.TextView;import java.util.List;/** * 三级级目录 * Created by hokas on 2015/11/4. */public class VisitPollcyThreeAdapter extends BaseExpandableListAdapter { private Context context; private List<PollcyTwo> pollcyTwos; public VisitPollcyThreeAdapter(Context context,List<PollcyTwo> pollcyTwos) { this.context = context; this.pollcyTwos = pollcyTwos; } @Override public int getGroupCount() { return pollcyTwos.size(); } @Override public int getChildrenCount(int groupPosition) { return pollcyTwos.get(groupPosition).pollcyThrees.size(); } @Override public Object getGroup(int groupPosition) { return pollcyTwos.get(groupPosition); } @Override public Object getChild(int groupPosition, int childPosition) { return pollcyTwos.get(groupPosition).pollcyThrees.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 true; } private TextView getTextView(){ AbsListView.LayoutParams layoutParams = new AbsListView.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,64); TextView textView = new TextView(context); textView.setLayoutParams(layoutParams); textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.LEFT); textView.setPadding(80, 0, 0, 0); textView.setTextSize(20); return textView; } @Override public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) { TextView textView = getTextView(); textView.setText(pollcyTwos.get(groupPosition).content); Log.d("VisitPollcyThreeAdapter", pollcyTwos.get(groupPosition).content); return textView; } @Override public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) { CustExpListview listView = new CustExpListview(context); VisitPollcyFourAdapter visitPollcyThreeAdapter = new VisitPollcyFourAdapter(context,pollcyTwos.get(groupPosition).pollcyThrees); listView.setAdapter(visitPollcyThreeAdapter); listView.setGroupIndicator(null); return listView; } @Override public boolean isChildSelectable(int groupPosition, int childPosition) { return true; } private class CustExpListview extends ExpandableListView { public CustExpListview(Context context) { super(context); } protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { widthMeasureSpec = MeasureSpec.makeMeasureSpec(1000, MeasureSpec.AT_MOST); heightMeasureSpec = MeasureSpec.makeMeasureSpec(700, MeasureSpec.AT_MOST); super.onMeasure(widthMeasureSpec, heightMeasureSpec); } }}
package com.hokas.expandablelistview;import android.content.Context;import android.view.Gravity;import android.view.View;import android.view.ViewGroup;import android.widget.AbsListView;import android.widget.BaseExpandableListAdapter;import android.widget.TextView;import java.util.List;/** * 三级级目录 * Created by hokas on 2015/11/4. */public class VisitPollcyFourAdapter extends BaseExpandableListAdapter { private Context context; private List<PollcyThree> pollcyThrees; public VisitPollcyFourAdapter(Context context, List<PollcyThree> pollcyThrees) { this.context = context; this.pollcyThrees = pollcyThrees; } @Override public int getGroupCount() { return pollcyThrees.size(); } @Override public int getChildrenCount(int groupPosition) { return pollcyThrees.get(groupPosition).pollcyFours.size(); } @Override public Object getGroup(int groupPosition) { return pollcyThrees.get(groupPosition); } @Override public Object getChild(int groupPosition, int childPosition) { return pollcyThrees.get(groupPosition).pollcyFours.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 true; } private TextView getTextView(){ AbsListView.LayoutParams layoutParams = new AbsListView.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,64); TextView textView = new TextView(context); textView.setLayoutParams(layoutParams); textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.LEFT); textView.setPadding(120, 0, 0, 0); textView.setTextSize(20); return textView; } @Override public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) { TextView textView = getTextView(); textView.setText(pollcyThrees.get(groupPosition).content); return textView; } @Override public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) { TextView textView = getTextView(); textView.setPadding(160, 0, 0, 0); textView.setText(pollcyThrees.get(groupPosition).pollcyFours.get(childPosition).content); return textView; } @Override public boolean isChildSelectable(int groupPosition, int childPosition) { return true; }}
activity的布局文件
<?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" tools:context="com.hokas.expandablelistview.MainActivity"> <ExpandableListView android:id="@+id/listView" android:layout_width="match_parent" android:layout_height="match_parent"/></RelativeLayout>
直接上源码 http://download.csdn.net/detail/qq_15643219/9240509
0 0
- android ExpandableListView 四级目录结构
- Android入门教程(四)之------Android工程目录结构介绍
- Android入门教程(四)之------Android工程目录结构介绍
- Android入门教程(四)之------Android工程目录结构介绍
- Android入门教程(四)之------Android工程目录结构介绍
- Android入门教程(四)之-------->Android工程目录结构介绍
- Android入门教程(四)之------Android工程目录结构介绍
- Android系列教程之四:Android项目的目录结构
- Android入门教程(四)之------Android工程目录结构介绍
- Android系列教程之四:Android项目的目录结构
- Android系列教程之四:Android项目的目录结构
- Android Studio基础之项目目录结构(四)-学习篇
- android 用ExpandableListView实现的文件目录树框架
- Android 目录结构
- Android 目录结构
- Android项目目录结构
- Android目录结构
- Android SDK 目录结构
- 详解 NXP Cortex-M3 加密设置
- 移动端app支付宝支付
- 高德地图基础功能使用心得
- 对 oracle 数据库日期格式,以及对日期操作的理解
- mongodb aggregation 聚合
- android ExpandableListView 四级目录结构
- 寻找热门查询
- Android开发:Fragment不同操作的生命周期
- (六)Spring+JMS+ActiveMQ+Tomcat实现消息服务
- MATLAB 运算符的优先级顺序
- springmvc+mybatis+sitemesh3主要配置
- 配置文件
- 151103总结
- UIWebView(进阶)