- 浏览: 282468 次
- 性别:
- 来自: 北京
-
文章分类
最新评论
-
jasonking412:
鄙视抄袭,都TMD一样的。
Openfire red5.war下载已经配置 -
xhg19901120:
有没有下载地址啊
【转】Android 多级菜单 -
yxl2005play:
为什么是404?博主,求解
Openfire red5.war下载已经配置 -
tan2416:
回复看看。。。。。
实现在popwindow中展示listview列表 -
liufeng7600:
你好,求教: 我可不可以在pc上用web浏览器访问 Andr ...
android中实现JavaScript与Java之间实现互相调用
效果:
main.xml:
- <?xml version= "1.0" encoding= "utf-8" ?>
- <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:orientation="horizontal" android:layout_width= "fill_parent"
- android:layout_height="wrap_content" >
- <ImageView android:id="@+id/icon" android:layout_width= "wrap_content"
- android:layout_height="fill_parent" android:layout_marginRight= "6.0dip"
- android:layout_alignParentTop="true" android:layout_alignParentBottom= "true" />
- <!--<TextView android:id="@+id/text" android:layout_gravity= "center_vertical"
- android:layout_weight="1.0" android:layout_height= "wrap_content" android:layout_width= "0dip"
- android:textAppearance="?android:attr/textAppearanceMedium" android:singleLine= "true"
- android:textColor="#ffffff" /> -->
- <TextView android:textAppearance="?android:textAppearanceMedium"
- android:gravity="center_vertical" android:id= "@+id/text"
- android:textColor="#ffffff" android:layout_width= "fill_parent"
- android:layout_height="fill_parent" android:singleLine= "true"
- android:layout_toRightOf="@id/icon" android:layout_alignParentTop= "true"
- android:layout_alignParentBottom="true" />
- </RelativeLayout>
TreeElement.java:
- package com.iaiai;
- import java.util.ArrayList;
- /**
- *
- * <p>
- * Title: TreeElement.java
- * </p>
- * <p>
- * E-Mail: 176291935@qq.com
- * </p>
- * <p>
- * QQ: 176291935
- * </p>
- * <p>
- * Http: iaiai.iteye.com
- * </p>
- * <p>
- * Create time: 2011-8-20
- * </p>
- *
- * @author 丸子
- * @version 0.0.1
- */
- public class TreeElement {
- private String id;
- private String outlineTitle;
- private boolean mhasParent;
- private boolean mhasChild;
- private TreeElement parent;
- private int level;
- private ArrayList<TreeElement> childList = new ArrayList<TreeElement>();
- public String getId() {
- return id;
- }
- public void setId(String id) {
- this .id = id;
- }
- public String getOutlineTitle() {
- return outlineTitle;
- }
- public void setOutlineTitle(String outlineTitle) {
- this .outlineTitle = outlineTitle;
- }
- public boolean isMhasParent() {
- return mhasParent;
- }
- public void setMhasParent( boolean mhasParent) {
- this .mhasParent = mhasParent;
- }
- public boolean isMhasChild() {
- return mhasChild;
- }
- public void setMhasChild( boolean mhasChild) {
- this .mhasChild = mhasChild;
- }
- public int getLevel() {
- return level;
- }
- public void setLevel( int level) {
- this .level = level;
- }
- public boolean isExpanded() {
- return expanded;
- }
- public void setExpanded( boolean expanded) {
- this .expanded = expanded;
- }
- public ArrayList<TreeElement> getChildList() {
- return childList;
- }
- public TreeElement getParent() {
- return parent;
- }
- public void setParent(TreeElement parent) {
- this .parent = parent;
- }
- // private OutlineElement outlineElement;
- private boolean expanded;
- public void addChild(TreeElement c) {
- this .childList.add(c);
- this .mhasParent = false ;
- this .mhasChild = true ;
- c.parent = this ;
- c.level = this .level + 1 ;
- }
- public TreeElement(String id, String title) {
- super ();
- this .id = id;
- this .outlineTitle = title;
- this .level = 0 ;
- this .mhasParent = true ;
- this .mhasChild = false ;
- this .parent = null ;
- }
- public TreeElement(String id, String outlineTitle, boolean mhasParent,
- boolean mhasChild, TreeElement parent, int level, boolean expanded) {
- super ();
- this .id = id;
- this .outlineTitle = outlineTitle;
- this .mhasParent = mhasParent;
- this .mhasChild = mhasChild;
- this .parent = parent;
- if (parent != null ) {
- this .parent.getChildList().add( this );
- }
- this .level = level;
- this .expanded = expanded;
- }
- }
TreeView.java:
- package com.iaiai;
- import java.util.ArrayList;
- import java.util.List;
- import android.app.ListActivity;
- import android.content.Context;
- import android.graphics.Bitmap;
- import android.graphics.BitmapFactory;
- import android.os.Bundle;
- import android.util.Log;
- import android.view.LayoutInflater;
- import android.view.View;
- import android.view.ViewGroup;
- import android.widget.ArrayAdapter;
- import android.widget.ImageView;
- import android.widget.ListView;
- import android.widget.TextView;
- import android.widget.Toast;
- /**
- *
- * <p>
- * Title: TreeView.java
- * </p>
- * <p>
- * E-Mail: 176291935@qq.com
- * </p>
- * <p>
- * QQ: 176291935
- * </p>
- * <p>
- * Http: iaiai.iteye.com
- * </p>
- * <p>
- * Create time: 2011-8-20
- * </p>
- *
- * @author 丸子
- * @version 0.0.1
- */
- public class TreeView extends ListActivity {
- private ArrayList<TreeElement> mPdfOutlinesCount = new ArrayList<TreeElement>();
- private TreeViewAdapter treeViewAdapter = null ;
- /** Called when the activity is first created. */
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super .onCreate(savedInstanceState);
- initialData();
- treeViewAdapter = new TreeViewAdapter( this , R.layout.main,
- mPdfOutlinesCount);
- setListAdapter(treeViewAdapter);
- registerForContextMenu(getListView());
- }
- private void initialData() {
- TreeElement element1 = new TreeElement( "01" , "关键类" );
- TreeElement element2 = new TreeElement( "02" , "应用程序组件" );
- TreeElement element3 = new TreeElement( "03" , "Activity和任务" );
- TreeElement element4 = new TreeElement( "04" , "激活组件:intent" );
- TreeElement element5 = new TreeElement( "05" , "关闭组件" );
- TreeElement element6 = new TreeElement( "06" , "manifest文件" );
- TreeElement element7 = new TreeElement( "07" , "Intent过滤器" );
- TreeElement element8 = new TreeElement( "08" , "Affinity(吸引力)和新任务" );
- TreeElement element9 = new TreeElement( "09" , "加载模式" );
- TreeElement element10 = new TreeElement( "10" , "加载模式孩子1" );
- TreeElement element11 = new TreeElement( "11" , "加载模式孩子2" );
- TreeElement element12 = new TreeElement( "12" , "加载模式孩子2的孩子1" );
- TreeElement element13 = new TreeElement( "13" , "加载模式孩子2的孩子2" );
- TreeElement element14 = new TreeElement( "14" , "加载模式孩子1的孩子1" );
- TreeElement element15 = new TreeElement( "15" , "加载模式孩子1的孩子2" );
- TreeElement element16 = new TreeElement( "16" , "加载模式孩子1的孩子3" );
- TreeElement element17 = new TreeElement( "17" , "加载模式孩子1的孩子4" );
- TreeElement element18 = new TreeElement( "18" , "加载模式孩子1的孩子5" );
- TreeElement element19 = new TreeElement( "19" , "加载模式孩子1的孩子6" );
- mPdfOutlinesCount.add(element1);
- mPdfOutlinesCount.add(element2);
- mPdfOutlinesCount.add(element9);
- element2.addChild(element3);
- element1.addChild(element4);
- element1.addChild(element5);
- element1.addChild(element6);
- element1.addChild(element7);
- element7.addChild(element8);
- element9.addChild(element10);
- element9.addChild(element11);
- element11.addChild(element12);
- element11.addChild(element13);
- element10.addChild(element14);
- element10.addChild(element15);
- element10.addChild(element16);
- element10.addChild(element17);
- element10.addChild(element18);
- element10.addChild(element19);
- }
- @SuppressWarnings ( "unchecked" )
- private class TreeViewAdapter extends ArrayAdapter {
- public TreeViewAdapter(Context context, int textViewResourceId,
- List objects) {
- super (context, textViewResourceId, objects);
- mInflater = LayoutInflater.from(context);
- mfilelist = objects;
- mIconCollapse = BitmapFactory.decodeResource(
- context.getResources(), R.drawable.outline_list_collapse);
- mIconExpand = BitmapFactory.decodeResource(context.getResources(),
- R.drawable.outline_list_expand);
- }
- private LayoutInflater mInflater;
- private List<TreeElement> mfilelist;
- private Bitmap mIconCollapse;
- private Bitmap mIconExpand;
- public int getCount() {
- return mfilelist.size();
- }
- public Object getItem( int position) {
- return position;
- }
- public long getItemId( int position) {
- return position;
- }
- public View getView( int position, View convertView, ViewGroup parent) {
- ViewHolder holder;
- /* if (convertView == null) { */
- convertView = mInflater.inflate(R.layout.main, null );
- holder = new ViewHolder();
- holder.text = (TextView) convertView.findViewById(R.id.text);
- holder.icon = (ImageView) convertView.findViewById(R.id.icon);
- convertView.setTag(holder);
- /*
- * } else { holder = (ViewHolder) convertView.getTag(); }
- */
- final TreeElement obj = mfilelist.get(position);
- holder.text.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- Log.i("TreeView" , "obj.id:" + obj.getId());
- }
- });
- int level = obj.getLevel();
- holder.icon.setPadding(25 * (level + 1 ),
- holder.icon.getPaddingTop(), 0 ,
- holder.icon.getPaddingBottom());
- holder.text.setText(obj.getOutlineTitle());
- if (obj.isMhasChild() && (obj.isExpanded() == false )) {
- holder.icon.setImageBitmap(mIconCollapse);
- } else if (obj.isMhasChild() && (obj.isExpanded() == true )) {
- holder.icon.setImageBitmap(mIconExpand);
- } else if (!obj.isMhasChild()) {
- holder.icon.setImageBitmap(mIconCollapse);
- holder.icon.setVisibility(View.INVISIBLE);
- }
- return convertView;
- }
- class ViewHolder {
- TextView text;
- ImageView icon;
- }
- }
- @Override
- protected void onListItemClick(ListView l, View v, int position, long id) {
- super .onListItemClick(l, v, position, id);
- Log.i("TreeView" , "position:" + position);
- if (!mPdfOutlinesCount.get(position).isMhasChild()) {
- Toast.makeText(this , mPdfOutlinesCount.get(position)
- .getOutlineTitle(), 2000 );
- /*
- * int pageNumber; Intent i = getIntent(); element element =
- * mPdfOutlinesCount .get(position); pageNumber =
- * element.getOutlineElement().pageNumber; if (pageNumber <= 0) {
- * String name = element.getOutlineElement().destName; pageNumber =
- * idocviewer.getPageNumberForNameForOutline(name);
- * element.getOutlineElement().pageNumber = pageNumber;
- * element.getOutlineElement().destName = null; }
- * i.putExtra("PageNumber", pageNumber); setResult(RESULT_OK, i);
- * finish();
- */
- return ;
- }
- if (mPdfOutlinesCount.get(position).isExpanded()) {
- mPdfOutlinesCount.get(position).setExpanded(false );
- TreeElement element = mPdfOutlinesCount.get(position);
- ArrayList<TreeElement> temp = new ArrayList<TreeElement>();
- for ( int i = position + 1 ; i < mPdfOutlinesCount.size(); i++) {
- if (element.getLevel() >= mPdfOutlinesCount.get(i).getLevel()) {
- break ;
- }
- temp.add(mPdfOutlinesCount.get(i));
- }
- mPdfOutlinesCount.removeAll(temp);
- treeViewAdapter.notifyDataSetChanged();
- /*
- * fileExploreAdapter = new TreeViewAdapter(this, R.layout.outline,
- * mPdfOutlinesCount);
- */
- // setListAdapter(fileExploreAdapter);
- } else {
- TreeElement obj = mPdfOutlinesCount.get(position);
- obj.setExpanded(true );
- int level = obj.getLevel();
- int nextLevel = level + 1 ;
- for (TreeElement element : obj.getChildList()) {
- element.setLevel(nextLevel);
- element.setExpanded(false );
- mPdfOutlinesCount.add(position + 1 , element);
- }
- treeViewAdapter.notifyDataSetChanged();
- /*
- * fileExploreAdapter = new TreeViewAdapter(this, R.layout.outline,
- * mPdfOutlinesCount);
- */
- // setListAdapter(fileExploreAdapter);
- }
- }
-
}
发表评论
-
singleTop和singleTask有什么区别?(活动 Activity 四种加载模式)
2013-03-22 17:50 1465singleTop要求如果创建intent的时候栈顶已经有要 ... -
onCreateOptionsMenu和onPrepareOptionsMenu的差別在哪呢?
2012-09-17 16:25 1619在做菜单的功能,发现 ... -
android状态栏中多个通知冲突的问题
2012-09-11 17:49 6466网上看到的解决办法: 如果用相同的通知id, 该怎么 ... -
Anroid 异常:is not valid; is your activity running?
2012-08-29 11:23 1202是由于有activity时依附于另一个activity的, ... -
Android 如何让EditText不自动获取焦点
2012-08-15 11:42 3700在项目中,一进入一个页面, EditText默认就会自动获取焦 ... -
Animation
2012-07-31 23:51 861前面定义旋转,移动,缩放到什么程度, 后面是轴承点,根据这个点 ... -
删除android ScrollView边界阴影方法
2012-07-19 10:26 1346XML文件中添加以下方法: android:fadin ... -
Android的webview加载本地html、本apk内html和远程URL
2012-07-19 09:56 1713... -
如何在mac中创建android adb 环境
2012-05-03 23:31 1791Create an environment variable ... -
AlarmManager详细讲解
2012-04-21 23:33 1304AlarmManager的作用文档中的解释是:在特定的时刻为我 ... -
用Android代码实现打开USB调试
2012-03-20 17:52 9195打开Android手机的USB调试对于使用豌豆夹、调试程序等来 ... -
android ROM RAM 内部存储 系统存储 系统缓存区别
2012-03-16 14:58 5361内部存储┐ 系统存储├─物理位置是位于手机内部的非易失性存储 ... -
Android 读取MCC, MNC
2012-03-12 13:46 13360TelephonyManager telManager = ( ... -
Android 动画详解
2012-03-09 14:09 3755Tween动画又称“补间动画”、“中间动画”,这并不重要,就好 ... -
Region.Op
2012-02-29 17:37 986//INTERSECT 取两者交集,默认的方式 //DIF ... -
Eclipse中LogCat突然停止工作的解决
2012-01-18 17:34 1779... -
sdcard
2011-12-29 13:28 1058把文件放入SD卡 使用Activity的o ... -
Android 中自定义属性(attr.xml,TypedArray)的使用!
2011-10-07 17:39 1070在xml 文件里定义控件的属性,我们已经习惯了android ... -
Android 中自定义View的应用.
2011-10-07 17:38 857大家好我们今天的教程 ... -
android Canvas类介绍
2011-09-23 11:01 1382package com.yarin.android.E ...
相关推荐
"Android多级菜单的简单实现"这个主题主要关注如何构建类似于京东分类界面的多层导航结构。这样的菜单通常包含主菜单、子菜单以及可能的孙子菜单,允许用户逐级深入探索内容。 首先,我们需要理解Android菜单的基本...
这个“Android多级菜单源代码”很可能是为了实现类似树状结构的菜单,允许用户逐级深入,探索和执行不同的功能。下面我们将详细探讨Android多级菜单的设计与实现。 首先,Android的菜单通常通过`OptionsMenu`或`...
本资源提供的"android多级菜单源代码"着重实现了二级和三级菜单的功能,利用了Android的ExpandableListView组件,这是一种可扩展的列表视图,能够很好地处理层次结构的数据。 一、ExpandableListView简介 ...
android 多级菜单经典demo;开发环境 android studio 具体见blog: http://blog.csdn.net/q610098308/article/details/50333387
Spinner适合单级选择,而ExpandableListView则支持多级展开和折叠,非常适合构建多级菜单。 1. **Spinner与ExpandableListView的区别**: - Spinner提供了一个简单的下拉菜单,用户只能选择一个选项,而不能查看...
在Android开发中,创建多级菜单和树形菜单是一项常见的任务,尤其在构建导航系统或者展示复杂层级数据时。美团网和大众点评网等应用就使用了这种布局,以提供用户友好的界面来探索和筛选服务。下面我们将深入探讨...
总结,这个"android多级树菜单"项目提供了一个实用的解决方案,帮助开发者在Android应用中快速构建交互式的多级菜单。通过使用ListView、自定义适配器和递归算法,它可以灵活地适应各种层次结构的数据,并允许对UI...
"Android多级菜单"通常涉及到ListView、ExpandableListView或者RecyclerView等控件的使用,来实现可展开和折叠的菜单效果。下面将详细探讨这一主题。 一、ListView与多级菜单 ListView是Android系统提供的一个基础...
本示例程序“android多级菜单列表设计例程”提供了实现这一功能的基础框架,适用于开发者进行二次开发,比如将其修改为多级选择框。 在Android中,菜单通常由`Menu`类和`MenuItem`类来表示,它们是Android SDK中的...
3. **数据结构**: 为了存储多级菜单的数据,你可以使用嵌套的List或者自定义的树形数据结构(如TreeNode)。每一级菜单对应一个列表,列表中的每个元素包含其子菜单的引用。 4. **点击事件处理**: 当用户点击一个...
本压缩包“安卓SlidingMenu各种菜单侧滑菜单相关-Android多级菜单效果.rar”包含了一些实现此类功能的资源,虽然可能无法一一验证所有内容的可用性,但它们可以作为学习和参考的宝贵材料。 SlidingMenu库是Android...
`ExpandableListView`是Android SDK提供的一种可扩展的列表视图,它支持子项的展开和折叠,非常适合用来实现多级菜单。下面我们将从以下几个方面来探讨实现过程: 1. **理解`ExpandableListView`**: - `...
总的来说,这个"安卓三级联动省市联动多级联动相关-android多级菜单经典demo"是一个实用的学习资源,它涵盖了Android开发中常见的交互设计和数据处理技巧。开发者可以通过阅读和实践源码,提升自己在Android界面设计...
在Android中,我们可以将这个概念应用到多级菜单上,例如一级菜单选择后,显示二级菜单;二级菜单选定后再显示三级菜单。这种交互方式常见于导航、地区选择等场景。 要实现这样的功能,我们可以借助`ViewPager`组件...
总结来说,Android多级菜单的实现主要涉及自定义View的绘制和事件处理,以及Adapter的数据适配和视图生成。通过这两者的结合,可以构建出功能丰富、交互性强的多级菜单,提升用户在应用中的体验。在实践中,应根据...
总的来说,实现Android多级树形选择列表需要对数据结构有清晰的理解,熟练掌握UI组件的使用,以及处理用户交互的能力。开源项目是很好的学习资源,通过研究他人的代码,可以快速提升自己的开发技能。在实际应用中,...
"android实现listView多级菜单"这个主题就是关于如何在Android应用中创建这种结构化视图的知识点。 首先,我们来理解ListView的基础。ListView是一个可以动态加载并显示大量数据的视图,它通过适配器(Adapter)将...
在Android开发中,构建复杂导航结构,如二级、三级乃至多级菜单,是常见的需求,尤其是在设计具有层次感的应用界面时。本实例聚焦于使用`ExpandableListView`控件来实现这种多级菜单功能。`ExpandableListView`是...
在Android开发中,多级列表通常用于展示层次结构清晰、数据结构复杂的列表数据,例如文件系统、目录结构或者层级关系的菜单。`TreeView`是一种实现多级列表的有效方式,尤其适用于展示具有递归关系的数据。在给定的...
总结来说,这个“android多级树菜单应用”是一个基于ListView实现的Android项目,它利用`otree.jar`库简化了树结构的构建过程,并提供了自定义图标的功能。开发者可以通过查看和运行`otreeDemo`来学习如何在自己的...