Android中的多级列表的实施
发布时间:2021-12-15 11:00:07 所属栏目:教程 来源:互联网
导读:看看今天实现的Android中个多级列表的功能,其实这就是一个小组件,但是如果用好了,可以实现很大的功能呢!接着,有点累,什么都不说了,看看看实现的过程就可以了,挺简单的! 1.看看布局文件main.xml文件 ?xml version=1.0 encoding=utf-8? LinearLayout
看看今天实现的Android中个多级列表的功能,其实这就是一个小组件,但是如果用好了,可以实现很大的功能呢!接着,有点累,什么都不说了,看看看实现的过程就可以了,挺简单的! 1.看看布局文件main.xml文件 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="@drawable/bg" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="那些上过与即将被上的大学课程:" android:textColor="#FF6100" android:textSize="20dp" /> <ExpandableListView android:id="@+id/elistview" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginLeft="5dp" /> </LinearLayout> 2.接着看看主活动mainActivity.java package com.wang; import android.app.Activity; import android.os.Bundle; import android.view.ContextMenu; import android.view.View; import android.view.Window; import android.view.WindowManager; import android.view.ContextMenu.ContextMenuInfo; import android.widget.ExpandableListAdapter; import android.widget.ExpandableListView; import android.widget.Toast; import android.widget.ExpandableListView.OnChildClickListener; import android.widget.ExpandableListView.OnGroupClickListener; import android.widget.ExpandableListView.OnGroupCollapseListener; import android.widget.ExpandableListView.OnGroupExpandListener; public class MaintActivity extends Activity { // 创建一个上下文菜单的方法 public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { super.onCreateContextMenu(menu, v, menuInfo); // 一个垂直滚动的两级列表。取得菜单项 ExpandableListView.ExpandableListContextMenuInfo info = (ExpandableListView.ExpandableListContextMenuInfo) menuInfo; // 获得这个类型 的位置 int type = ExpandableListView .getPackedPositionType(info.packedPosition); // 取得所在组的索引 int group = ExpandableListView .getPackedPositionGroup(info.packedPosition); // 取得子菜单的索引 int child = ExpandableListView .getPackedPositionGroup(info.packedPosition); Toast.makeText(MaintActivity.this, "类型 =" + type + " 分组:" + group + " 子选项:" + child, Toast.LENGTH_LONG).show(); } private ExpandableListView eListView = null; private ExpandableListAdapter adapter = null; @Override public void onCreate(Bundle savedInstanceState) { // 去除标题, this.requestWindowFeature(Window.FEATURE_NO_TITLE); // 取消状态栏,充满全屏 this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); super.onCreate(savedInstanceState); super.setContentView(R.layout.main); // 实例化组件 this.eListView = (ExpandableListView) findViewById(R.id.elistview); // 声明一个adapter对象 adapter = new myExpendableadapler(this); // 设置适配器提供了数据 this.eListView.setAdapter(this.adapter); // 注册一个上下文菜单显示给定的视图(多个视图可以显示上下文菜单)。 super.registerForContextMenu(this.eListView); // 设置点击时候触发的事件 1,子选项点击事件 2。父选项单击事件 3.分组打开事件 4.分组关闭事件 this.eListView.setOnChildClickListener(new ChildClickListener()); this.eListView.setOnGroupClickListener(new GroupClickListener()); this.eListView.setOnGroupExpandListener(new GroupExpandListener()); this.eListView.setOnGroupCollapseListener(new GroupCollapseListener()); } // /1,子选项点击事件 private class ChildClickListener implements OnChildClickListener { public boolean onChildClick(ExpandableListView parent, View v, int groupPosition, int childPosition, long id) { Toast .makeText( MaintActivity.this, "子选项被选中,所的组:" + groupPosition + " 子选项的位置:" + childPosition, Toast.LENGTH_LONG).show(); return false; } } // 2。父选项单击事件 private class GroupClickListener implements OnGroupClickListener { public boolean onGroupClick(ExpandableListView parent, View v, int groupPosition, long id) { Toast.makeText(MaintActivity.this, "分组选项被选中,所在组: " + groupPosition, Toast.LENGTH_LONG).show(); return false; } } // 3.分组打开事件 private class GroupExpandListener implements OnGroupExpandListener { public void onGroupExpand(int groupPosition) { // TODO Auto-generated method stub Toast.makeText(MaintActivity.this, "打开分组,所在组:" + groupPosition, Toast.LENGTH_LONG).show(); } } // 4.分组关闭事件 private class GroupCollapseListener implements OnGroupCollapseListener { public void onGroupCollapse(int groupPosition) { Toast.makeText(MaintActivity.this, "关闭分组,所在组:" + groupPosition, Toast.LENGTH_LONG).show(); } } } 3.主活动的实现需要一个适配器,myExpendableadapler.java package com.wang; 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; public class myExpendableadapler extends BaseExpandableListAdapter { // 组名称 private String[] group = new String[] { "专业课", "公共课", "选修课", "选逃课" }; // 子选项的名字 private String[][] child = new String[][] { { "C语言", "java程序设计基础教程", "数据库原理与应用", "数据结构", "linux下的嵌入式C语言编程", "linux桌面应用程序设计", "计算机操作系统", "计算机组成原理" }, { "大学英语", "马克思哲学原理", "形势与政策", "ARM体系结构", "嵌入式软件开发", "软件工程" }, { "音乐鉴赏", "市场营销", "android开发与应用", "Visual C++实用教程", "算法分析与程序设计" }, { "马克思哲学原理", "形势与政策" } }; private Context context = null; // 构造函数 public myExpendableadapler(Context context) { this.context = context; } public Object getChild(int groupPosition, int childPosition) { return this.child[groupPosition][childPosition]; } public long getChildId(int groupPosition, int childPosition) { return childPosition; } private TextView buildTextView() { //LayoutParams AbsListView扩展提供一个位置来保存视图类型。 AbsListView.LayoutParams params = new AbsListView.LayoutParams( ViewGroup.LayoutParams.FILL_PARENT, 40); TextView textView = new TextView(this.context); textView.setLayoutParams(params); //大小 textView.setTextSize(15.0f); textView.setGravity(Gravity.LEFT+3); textView.setPadding(40, 8, 3, 3); return textView; } public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) { TextView textView = new TextView(this.context); //得到每组的子选项并转换成字符串 textView.setText(this.getChild(groupPosition, childPosition).toString()); return textView; } //统计子选项的个数 public int getChildrenCount(int groupPosition) { // TODO Auto-generated method stub return this.child[groupPosition].length; } //得到复选项的位置 public Object getGroup(int groupPosition) { // TODO Auto-generated method stub return this.group[groupPosition]; } //得到复选项的个数 public int getGroupCount() { // TODO Auto-generated method stub return this.group.length; } //得到复选项的id public long getGroupId(int groupPosition) { // TODO Auto-generated method stub return groupPosition; } public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) { // TODO Auto-generated method stub TextView textView = this.buildTextView(); textView.setText(this.getGroup(groupPosition).toString()); return textView; } //是否子选项和父选项id是稳定在改变底层数据。 public boolean hasStableIds() { // TODO Auto-generated method stub return true; } //p判断子选项是否可以选择 public boolean isChildSelectable(int groupPosition, int childPosition) { // TODO Auto-generated method stub return true; } } 4.接着就可以看看实现的效果了: ![]() (编辑:PHP编程网 - 黄冈站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |