原创内容,转载请注明出处
1、TabActivity
TabActivity是一个切换标签,可以同时装载多个标签。它的出现主要是为了解决手机屏幕过小,展现内容不够友好(注在Android4版本中已不推荐使用Tab来显示多个页面,推荐使用Frame来代替)。如下例子
1、将上个例子的FirstActivity.java类修改为SecondActivity.java名称,并将其对应的布局文件activity_first.xml修改为activity_second.xml。
2、将MainActivity.java类修改为FirstActivity.java名称,并将其对应的布局文件activity_main.xml修改为activity_first.xml。
3、创建一个MyTabActivity.java类和其对应布局文件activity_my_tab.xml。
布局文件activity_my_tab.xml,该文件必须以TabHost标记为根元素,其中TabWidget标记代表标签页,FrameLayout标记则代表标签页的内容,它们都使用Android自带的id名称。文件内容如下
<?xml version="1.0" encoding="utf-8"?> <TabHost xmlns:android="http://schemas.android.com/apk/res/android" android:id="@android:id/tabhost" android:layout_width="fill_parent" android:layout_height="fill_parent" > <LinearLayout android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" android:padding="5dp" > <TabWidget android:id="@android:id/tabs" android:layout_width="fill_parent" android:layout_height="wrap_content" /> <FrameLayout android:id="@android:id/tabcontent" android:layout_width="fill_parent" android:layout_height="fill_parent" android:padding="5dp" /> </LinearLayout> </TabHost>
MyTabActivity继承了TabActivity类,并在onCreate方法里添加Tab标签页,如下代码将FirstActivity、SecondActivity分别添加为第一二个标签页。
package com.cygoat.myapp; import android.app.TabActivity; import android.content.Intent; import android.os.Bundle; import android.widget.TabHost; public class MyTabActivity extends TabActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_my_tab); // 获取tabHost,即整个Tab TabHost tabHost = getTabHost(); // 创建Intent跳转对象 Intent intent = new Intent(); intent.setClass(this, FirstActivity.class); // 新建一个标签页 TabHost.TabSpec spec = tabHost.newTabSpec("FirstActivity"); // 设置标签名称,还可设置图片 spec.setIndicator("第一个"); // 设置Intent跳转对象 spec.setContent(intent); // 添加标签页 tabHost.addTab(spec); // 创建Intent跳转对象 intent = new Intent(); intent.setClass(this, SecondActivity.class); // 新建一个标签页 spec = tabHost.newTabSpec("SecondActivity"); // 设置标签名称,还可设置图片 spec.setIndicator("第二个"); // 设置Intent跳转对象 spec.setContent(intent); // 添加标签页 tabHost.addTab(spec); } }
4.在AndroidManifest.xml文件中注册MyTabActivity,并将它设置为主启动Activity。
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.cygoat.myapp" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="15" android:targetSdkVersion="21" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name=".FirstActivity" android:label="@string/app_name" > </activity> <activity android:name=".SecondActivity" android:label="@string/title_activity_first" android:theme="@android:style/Theme.Dialog" > </activity> <activity android:name=".MyTabActivity" android:label="@string/title_activity_my_tab" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
5.运行结果如下
如上测试结果,成功将FirstActivity和SecondActivity都显示在同一个页面。同理,使用TabActivity还可添加多个Activity在该页面上。
2、ListActivity
ListActivity是一个很常见的Activity,它可以展示大量数据集(展现内容在ListView控件下,该类包含ListView控件),并且界面的展示效果可以由开发者来设计。故而在布局中需要加入ListView,并且id是Android框架已经定义好的id(android.R.id.list),除此还需要构建展现内容的数据集,数据集使用List<Map<>>集合来存储。最后将ListView和List<Map>数据集构建一个ListAdapter适配器对象,将该对象设入当前Activity中。
1.自定义构建展现内容布局文件list.xml,这里简单定义两个Textview标签。
<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" > <TextView android:id="@+id/name" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <TextView android:id="@+id/age" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" /> </RelativeLayout>
2.修改上一个项目的activity_first.xml文件,在该布局文件添加ListView控件。
<LinearLayout 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" android:orientation="vertical" tools:context="com.cygoat.myapp.FirstActivity" > <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" > <EditText android:id="@+id/message" android:layout_width="wrap_content" android:layout_height="wrap_content" android:hint="@string/hello_world" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="sendMessage" android:text="@string/send_button" /> </LinearLayout> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" > <ListView android:id="@android:id/list" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout> </LinearLayout>
3.修改FirstActivity类的onCreate方法。
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_first); System.out.println("-----mainActivity onCreate------"); //创建ListView数据集 List<Map<String, String>> list = new ArrayList<Map<String,String>>(); for(int i=0;i<10;i++){ Map<String, String> map = new HashMap<String, String>(); map.put("name", "zhangsan"+i); map.put("age", Math.round((Math.random()*100))+"岁"); list.add(map); } //创建ListAdapter适配器 ListAdapter listAdapter = new SimpleAdapter(this,list,R.layout.list,new String[]{"name","age"},new int[]{R.id.name,R.id.age}); //为Activity设置适配器 setListAdapter(listAdapter); }
4.重写FirstActivity类的List选项单击事件方法onListItemClick,每当单击list选项时,弹出提示消息。
@Override protected void onListItemClick(ListView l, View v, int position, long id) { super.onListItemClick(l, v, position, id); //获取选中项的数据 Map<String, String> map = (Map<String, String>) l.getItemAtPosition(position); //显示选中项数据 Toast.makeText(this, "名字"+map.get("name")+ " 年龄" +map.get("age"), Toast.LENGTH_SHORT).show(); }
5.测试结果如下
如上完成了集合数据的展示和点击事件的监听
3、ListView
ListView用来展现一系列集合数据,展现数据的界面风格可由开发者自定义。在上面的ListActivity类,其实就是使用ListView控件来展示集合数据,它是对Activity的一个封装类,该类中封装了ListView控件。下面将不使用ListActivity类,直接在Activity类中使用ListView控件来展示集合数据。
1.修改activity_second.xml布局文件,增加一个ListView控件。
<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" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.cygoat.myapp.SecondActivity" > <TextView android:id="@+id/result" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/hello_world" /> <ListView android:id="@+id/list" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_below="@id/result" /> </RelativeLayout>
2.修改SecondActivity类,在onCreate文件中为ListView控件添加集合数据,并为其添加选项点击监听器。
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_second); //获取Intent跳转对象 Intent intent = getIntent(); //获取接收消息 String message = intent.getStringExtra("message"); TextView textView = (TextView) findViewById(R.id.result); //显示接收的消息内容在标签上 textView.setText("内容为:"+message); System.out.println("-----FirstActivity onCreate------"); ListView listView = (ListView) findViewById(R.id.list); //创建ListView数据集 List<Map<String, String>> list = new ArrayList<Map<String,String>>(); for(int i=0;i<10;i++){ Map<String, String> map = new HashMap<String, String>(); map.put("name", "zhangsan"+i); map.put("age", Math.round((Math.random()*100))+"岁"); list.add(map); } //创建ListAdapter适配器 ListAdapter listAdapter = new SimpleAdapter(this,list,R.layout.list,new String[]{"name","age"},new int[]{R.id.name,R.id.age}); //为Activity设置适配器 listView.setAdapter(listAdapter); listView.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { System.out.println(""); //获取选中项的数据 Map<String, String> map = (Map<String, String>) parent.getItemAtPosition(position); //显示选中项数据 Toast.makeText(SecondActivity.this, "名字"+map.get("name")+ " 年龄" +map.get("age"), Toast.LENGTH_SHORT).show(); } }); }
3.测试结果如下
如上测试结果,完成ListView的展示和点击事件监听。
源代码如下
相关推荐
Google Android SDK开发范例大全(完整版)共4个分卷 目录 第1章 了解.深入.动手做. 1.1 红透半边天的Android 1.2 本书目的及涵盖范例范围 1.3 如何阅读本书 1.4 使用本书范例 1.5 参考网站 第2章 Android初体验 2.1...
【Android-ListActivity实现列表】 在Android开发中,ListActivity是一个专门用于展示列表的Activity,它简化了在应用中创建和管理ListView的过程。本篇内容将深入解析如何使用ListActivity来构建一个基本的列表...
Google Android SDK开发范例大全(完整版)共4个分卷 目录 第1章 了解.深入.动手做. 1.1 红透半边天的Android 1.2 本书目的及涵盖范例范围 1.3 如何阅读本书 1.4 使用本书范例 1.5 参考网站 第2章 Android初体验 2.1...
Google Android SDK开发范例大全(完整版)共4个分卷 目录 第1章 了解.深入.动手做. 1.1 红透半边天的Android 1.2 本书目的及涵盖范例范围 1.3 如何阅读本书 1.4 使用本书范例 1.5 参考网站 第2章 Android初体验 2.1...
在Android开发中,`ListActivity`和`BaseAdapter`是两个关键组件,它们共同用于创建显示数据列表的应用界面。理解并熟练使用这两个组件对于构建用户友好的、数据驱动的Android应用至关重要。 `ListActivity`是...
本文实例分析了Android中ListActivity用法。分享给大家供大家参考,具体如下: 程序如下: import android.app.ListActivity; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem;...
ListActivity是Android提供的一种专门用来展示列表的Activity,而SimpleAdapter则是将数据绑定到ListView的简单方式。现在我们详细讲解如何实现这个过程。 首先,我们从一个Activity(我们称之为源Activity)启动另...
在Android开发中,`ListActivity`和`Menu`是两个重要的组件,它们分别用于展示列表数据和提供应用程序的菜单选项。本篇文章将深入探讨如何将`ListActivity`与`Menu`进行有效整合,以实现更加丰富的用户交互界面。 ...
在Android开发中,`ListActivity`是一个特殊类型的`Activity`,专门用于展示列表数据。它继承自`Activity`,并且提供了内置的布局管理器来显示一个`ListView`,简化了列表视图的创建和操作。这篇博客“ListActivity...
5.24 取得电信网络与手机相关信息——TelephonyManager与android.provider.Settings.System的应用 第6章 手机自动服务纪实 –p254 6.1 您有一条短信popup提醒——常驻BroadcastReceiver的应用 6.2 手机电池计量还剩...
5.24 取得电信网络与手机相关信息——TelephonyManager与android.provider.Settings.System的应用 第6章 手机自动服务纪实 6.1 您有一条短信popup提醒——常驻BroadcastReceiver的应用 6.2 手机电池计量还剩多少...
这个过程通常涉及到Java的I/O操作和Android的ListActivity组件。本文将深入探讨如何将这两个技术结合,实现查找并显示程序根目录下所有文件的功能。 首先,我们需要理解Android中的文件系统。在Android中,每个应用...
——具选择功能的对话框 3.21 Android变脸——主题(Theme)实现 第4章 史上超豪华的手机控件 4.1 EditText与TextView共舞——setOnKeyListener事件 4.2 设计具有背景图的按钮——ImageButton的焦点及事件处理 4.3 给...
5.24 取得电信网络与手机相关信息——TelephonyManager与android.provider.Settings.System的应用 第6章 手机自动服务纪实 –p254 6.1 您有一条短信popup提醒——常驻BroadcastReceiver的应用 6.2 手机电池计量还剩...
5.24 取得电信网络与手机相关信息——TelephonyManager与android.provider.Settings.System的应用 第6章 手机自动服务纪实 –p254 6.1 您有一条短信popup提醒——常驻BroadcastReceiver的应用 6.2 手机电池计量还剩...
5.24 取得电信网络与手机相关信息——TelephonyManager与android.provider.Settings.System的应用 第6章 手机自动服务纪实 –p254 6.1 您有一条短信popup提醒——常驻BroadcastReceiver的应用 6.2 手机电池计量还剩...
5.24 取得电信网络与手机相关信息——TelephonyManager与android.provider.Settings.System的应用 第6章 手机自动服务纪实 6.1 您有一条短信popup提醒——常驻BroadcastReceiver的应用 6.2 手机电池计量还剩多少...