- 浏览: 665157 次
- 性别:
- 来自: 安徽
文章分类
- 全部博客 (252)
- Html/Div+CSS (12)
- Js/Jquery (34)
- Flex (2)
- Ajax (3)
- Java (35)
- C# (15)
- Spring (16)
- Hibernate (13)
- Struts2 (12)
- Struts1 (7)
- DWR (1)
- iBatis/myBatis (9)
- Tag(JSTL、EL) (1)
- Android (44)
- SQL (7)
- SEO (7)
- Exception (3)
- Tool (10)
- Other (3)
- WebService (9)
- Apache (7)
- Ext (0)
- Utils (12)
- thinking in programme (2)
- Hadoop (0)
- ActiveMQ (0)
- HTML5/CSS3 (0)
- WPF (1)
- NodeJs (1)
- 设计模式 (0)
- 程序人生 (1)
- 随笔 (1)
- Linux (1)
- Load Balance (0)
最新评论
-
drinkjava2:
太复杂了而且不通用,利用ThreadLocal可完美解决这一问 ...
JDBC的多条件动态查询 -
u013107014:
multipartRequest.getFiles(" ...
多文件上传 by MultipartFile and Multiple -
liyys:
可惜没讲你mysql数据库的表的设计
iBatis入门 -
Mapple_leave:
效果还是挺不错的,谢谢了。
中文简体与繁体的转换 -
arcpad:
JS禁用浏览器退格键
Android学习08-----Android中的基本控件(下)(1)_滚动视图:ScrollView和列表显示:ListView
- 博客分类:
- Android
从这篇开始,总结一下 Android 中的一些复杂点的常用组件。
滚动视图: ScrollView
滚动视图的使用形式与各个布局管理器的操作形式类似,唯一不同的是,所有的布局管理器之中,可以包含多个组件,而滚动视图里只能有一个组件,所以所谓的视图指的就是提供一个专门的容器,这个容器里面可以装下多于屏幕宽度的组件,而后采用拖拽的方式显示所有 ScrollView 中的组件。
main.xml :
<?xml version="1.0" encoding="utf-8"?> <ScrollView android:id="@+id/myscroll" xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent"> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:id="@+id/mylinear" android:layout_width="fill_parent" android:layout_height="fill_parent"> </LinearLayout> </ScrollView>
ScrollViewActivity.java:
package com.iflytek.activity; import android.app.Activity; import android.os.Bundle; import android.view.ViewGroup; import android.widget.Button; import android.widget.LinearLayout; public class ScrollViewActivity extends Activity { private String data[] = { "xdwang", "xdwangiflytek.iteye.com", "王旭东", "Java、C#、Android", "790419465@qq.com", "xdwangiflytek@gmail.com", "13956027313", "工作地点:安徽合肥", "家乡:安徽滁州","格言:打倒小日本","钓鱼岛属于中国" }; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); LinearLayout layout = (LinearLayout) super.findViewById(R.id.mylinear); // 取得组件 LinearLayout.LayoutParams param = new LinearLayout.LayoutParams( ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT); // 定义布局参数 for (int x = 0; x < this.data.length; x++) { // 通过循环方式将以上的信息通过Button组件进行封装 Button but = new Button(this); but.setText(this.data[x]); // 设置显示文字 layout.addView(but, param); // 增加组件 } } }
列表显示: ListView
1 、基本功能实现 Demo
package com.iflytkek.activity; import android.app.Activity; import android.os.Bundle; import android.widget.ArrayAdapter; import android.widget.ListView; public class ListView01Activity extends Activity { private String data[] = { "xdwang", "xdwangiflytek.iteye.com", "王旭东", "Java、C#、Android", "790419465@qq.com", "xdwangiflytek@gmail.com", "13956027313", "工作地点:安徽合肥", "家乡:安徽滁州","格言:打倒小日本","钓鱼岛属于中国" }; private ListView listView = null; // 定义ListView组件 /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); this.listView = new ListView(this); // 实例化组件 //simple_list_item_1,显示分风格 this.listView.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, this.data)); // 为ListView组件设置内容 super.setContentView(this.listView) ; // 显示组件 } }
2、SimpleAdapter
SimpleAdapter类主要功能是将List集合的数据转换为ListView可以支持的数据,而要想实现这种转换,首先需要定义一个数据的显示模版(专门定义一个布局管理器,基本上都是表格布局),在这个模版中可以定义ListView每行需要显示的所有组件,而在需要转换的List集合里保存的是多条Map集合的数据,这些Map集合里面保存着一些具体的要显示的信息,即:模版中每一个组件的ID实际上就相当于规定了里面保存的Map集合的key,而模版中每个组件的显示内容,则有Map保存的Value决定。这种操作也是ListView中操作最多的一种。
Layout/mian.xml:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:textSize="25px" android:gravity="center_horizontal" android:text="王旭东信息列表" /> <ListView android:id="@+id/datalist" android:layout_width="fill_parent" android:layout_height="wrap_content"/> </LinearLayout>
Layout/data_list.xml
<?xml version="1.0" encoding="utf-8"?> <TableLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content"> <TableRow> <ImageView android:id="@+id/icon" android:layout_height="wrap_content" android:layout_width="wrap_content" android:src="@drawable/file_icon"/> <TextView android:id="@+id/_id" android:textSize="15px" android:gravity="center_vertical" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <!-- 这边的id使用下划线的主要目的是为了以后在使用数据存储的时候SQLite数据库规定好必须使用一个下划线的id表示主键 --> <TextView android:id="@+id/name" android:textSize="15px" android:gravity="center_vertical" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </TableRow> </TableLayout>
SimpleAdapterActivity.java:
package com.iflytek.activity; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import android.app.Activity; import android.os.Bundle; import android.widget.ListView; import android.widget.SimpleAdapter; public class SimpleAdapterActivity extends Activity { // 准备出若干个信息而这些信息以后将通过程序加入到内嵌的线性布局文件之中 private String data[][] = { { "001", "xdwang" }, { "002", "xdwangiflytek.iteye.com" }, { "003", "王旭东" }, { "004", "Java、C#、Android" }, { "005", "790419465@qq.com" }, { "006", "xdwangiflytek@gmail.com" }, { "007", "13956027313" }, { "008", "工作地点:安徽合肥" }, { "009", "家乡:安徽滁州" }, { "0010", "格言:打倒小日本" }, { "0011", "钓鱼岛属于中国" } }; private ListView datalist = null; // 定义ListView组件 private List<Map<String, String>> listMaps = new ArrayList<Map<String, String>>(); // 定义显示的内容包装 private SimpleAdapter simpleAdapter = null; // 进行数据的转换操作 /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); this.datalist = (ListView) super.findViewById(R.id.datalist); // 取得组件 for (int x = 0; x < this.data.length; x++) { Map<String, String> map = new HashMap<String, String>(); // 定义Map集合,保存每一行数据 map.put("_id", this.data[x][0]); // 与data_list.xml中的TextView组加匹配 map.put("name", this.data[x][1]); // 与data_list.xml中的TextView组加匹配 this.listMaps.add(map); // 保存了所有的数据行 } this.simpleAdapter = new SimpleAdapter(this, this.listMaps, R.layout.data_list, new String[] { "_id", "name" } // Map中的key的名称 , new int[] { R.id._id, R.id.name }); // 是data_list.xml中定义的组件的资源ID this.datalist.setAdapter(this.simpleAdapter); } }
3、使用ListActivity
main.xml和data_list.xml和上面的不变
ListView04Activity.java:
package com.iflytek.activity; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import android.app.ListActivity; import android.os.Bundle; import android.widget.SimpleAdapter; public class ListView04Activity extends ListActivity {// 继承了ListActivity类 private String data[][] = { { "001", "xdwang" }, { "002", "xdwangiflytek.iteye.com" }, { "003", "王旭东" }, { "004", "Java、C#、Android" }, { "005", "790419465@qq.com" }, { "006", "xdwangiflytek@gmail.com" }, { "007", "13956027313" }, { "008", "工作地点:安徽合肥" }, { "009", "家乡:安徽滁州" }, { "0010", "格言:打倒小日本" }, { "0011", "钓鱼岛属于中国" } }; private List<Map<String, String>> list = new ArrayList<Map<String, String>>(); // 定义显示的内容包装 private SimpleAdapter simpleAdapter = null; // 进行数据的转换操作 public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); for (int x = 0; x < this.data.length; x++) { Map<String, String> map = new HashMap<String, String>(); // 定义Map集合,保存每一行数据 map.put("_id", this.data[x][0]); // 与data_list.xml中的TextView组加匹配 map.put("name", this.data[x][1]); // 与data_list.xml中的TextView组加匹配 this.list.add(map); // 保存了所有的数据行 } this.simpleAdapter = new SimpleAdapter(this, this.list, R.layout.data_list, new String[] { "_id", "name" } // Map中的key的名称 , new int[] { R.id._id, R.id.name }); // 是data_list.xml中定义的组件的资源ID super.setListAdapter(this.simpleAdapter); // 设置列表显示 } }
此时没有使用到main.xml文件,而只是利用了data_list.xml文件进行显示,虽然说可以完成列表的功能,但是这种显示风格并不特别实用,没有之前定义ListView组件,而后利用Activity程序设置内容显示方便。
4、事件处理
main.xml和data_list.xml和上面的不变
ListView05Activity.java
package com.iflytek.activity; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.ListView; import android.widget.SimpleAdapter; import android.widget.TextView; public class ListView05Activity extends Activity { private String data[][] = { { "001", "xdwang" }, { "002", "xdwangiflytek.iteye.com" }, { "003", "王旭东" }, { "004", "Java、C#、Android" }, { "005", "790419465@qq.com" }, { "006", "xdwangiflytek@gmail.com" }, { "007", "13956027313" }, { "008", "工作地点:安徽合肥" }, { "009", "家乡:安徽滁州" }, { "0010", "格言:打倒小日本" }, { "0011", "钓鱼岛属于中国" } }; private ListView datalist = null; // 定义ListView组件 private List<Map<String, String>> list = new ArrayList<Map<String, String>>(); // 定义显示的内容包装 private SimpleAdapter simpleAdapter = null; // 进行数据的转换操作 private TextView info = null; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); this.datalist = (ListView) super.findViewById(R.id.datalist); // 取得组件 this.info = (TextView) super.findViewById(R.id.info); // 取得组件 for (int x = 0; x < this.data.length; x++) { Map<String, String> map = new HashMap<String, String>(); // 定义Map集合,保存每一行数据 map.put("_id", this.data[x][0]); // 与data_list.xml中的TextView组加匹配 map.put("name", this.data[x][1]); // 与data_list.xml中的TextView组加匹配 this.list.add(map); // 保存了所有的数据行 } this.simpleAdapter = new SimpleAdapter(this, this.list, R.layout.data_list, new String[] { "_id", "name" } // Map中的key的名称 , new int[] { R.id._id, R.id.name }); // 是data_list.xml中定义的组件的资源ID this.datalist.setAdapter(this.simpleAdapter); this.datalist.setOnItemClickListener(new OnItemClickListenerImpl()); // 单击选项 } private class OnItemClickListenerImpl implements OnItemClickListener { @SuppressWarnings("unchecked") @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { Map<String, String> map = (Map<String, String>) ListView05Activity.this.simpleAdapter .getItem(position); String _id = map.get("_id"); String name = map.get("name"); ListView05Activity.this.info.setText("选中的数据项ID是:" + _id + ",名称是:" + name); } } }
5、复杂显示
Main.xml:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:textSize="25px" android:gravity="center_horizontal" android:text="学习视频列表" /> <ListView android:id="@+id/datalist" android:layout_width="fill_parent" android:layout_height="wrap_content"/> </LinearLayout>
data_list.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout 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/pic" android:layout_height="wrap_content" android:layout_width="wrap_content" android:padding="3px"/> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="150px" android:layout_height="wrap_content" android:gravity="left"> <TextView android:id="@+id/title" android:textSize="16px" android:padding="3px" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <TextView android:id="@+id/author" android:padding="3px" android:textSize="10px" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="200px" android:layout_height="wrap_content" android:gravity="left"> <TextView android:id="@+id/type" android:padding="3px" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <ImageView android:id="@+id/score" android:padding="3px" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout> </LinearLayout>
ListView03Activity.java:
package com.iflytek.activity; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import android.app.Activity; import android.os.Bundle; import android.widget.ListView; import android.widget.SimpleAdapter; public class ListView03Activity extends Activity { private int pic[] = new int[] { R.drawable.pic_oracle, R.drawable.pic_javase, R.drawable.pic_javaweb, R.drawable.pic_javaee, R.drawable.pic_android, R.drawable.pic_game }; private String data[][] = new String[][] { { "Oracle", "科大" }, { "Java SE", "小李" }, { "Java WEB", "花花" }, { "Java EE", "小王" }, { "Android", "乐乐" }, { "Java 游戏", "小三" } }; private ListView datalist = null; // 定义ListView组件 private List<Map<String, String>> list = new ArrayList<Map<String, String>>(); // 定义显示的内容包装 private SimpleAdapter simpleAdapter = null; // 进行数据的转换操作 /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); this.datalist = (ListView) super.findViewById(R.id.datalist); // 取得组件 for (int x = 0; x < this.data.length; x++) { Map<String, String> map = new HashMap<String, String>(); // 定义Map集合,保存每一行数据 map.put("pic", String.valueOf(this.pic[x])); // 与data_list.xml中的TextView组加匹配 map.put("title", this.data[x][0]); // 与data_list.xml中的TextView组加匹配 map.put("author", this.data[x][1]); // 与data_list.xml中的TextView组加匹配 map.put("type", "免费"); map.put("score", String.valueOf(R.drawable.start_05)); this.list.add(map); // 保存了所有的数据行 } this.simpleAdapter = new SimpleAdapter(this, this.list, R.layout.data_list, new String[] { "pic", "title", "author", "type", "score" } // Map中的key的名称 , new int[] { R.id.pic, R.id.title, R.id.author, R.id.type, R.id.score }); // 是data_list.xml中定义的组件的资源ID this.datalist.setAdapter(this.simpleAdapter); } }
发表评论
-
This version of ADT requires android SDK
2013-07-25 16:45 1548Windows系统下用Eclipse开发工具开发An ... -
Android学习13-----网络通信(4) WebView组件
2012-11-27 09:18 2460WebView 是一个开发的浏览 ... -
Android学习13-----网络通信(3) 与Web Service进行通讯
2012-11-26 09:40 1865这里我们的WebService使用xFire开发。 ... -
Android学习13-----网络通信(2) 与Socket交换数据
2012-11-23 09:11 3276对于网络开发而言,最常用的交互模式:WebService、We ... -
Android学习13-----网络通信(1) 与WEB服务器交换数据
2012-11-22 09:11 2165与Web服务器交互: 如果手机要想与 web ... -
Android学习11-----多媒体技术(5) 媒体录制
2012-11-16 08:10 1852在Android中通过android.media ... -
Android学习11-----多媒体技术(4) 使用摄像头拍照,多点触控
2012-11-15 08:37 2843一、摄像头拍照 前面说媒体播放 时了解了 ... -
Android学习11-----多媒体技术(3) 媒体播放
2012-11-14 08:25 1386在 Androi ... -
Android学习11-----多媒体技术(2) Animation
2012-11-13 08:47 1964一、渐变动画, Tweened Animation ... -
Android学习11-----多媒体技术(1) 绘制简单图形,Bitmap,Matrix
2012-11-12 08:48 1574一、绘制简单图 ... -
Android学习12-----手机服务(4) 传感器
2012-11-19 09:13 1995传感器一般用于游戏中,在 Android 系统中为 ... -
Android学习12-----手机服务(1) 取得电池电量和声音服务:AudioManager
2012-11-18 11:18 3439一、取得电池电量信息 ... -
Android学习10-----Android组件通信 (8) 桌面显示组件:AppWidget
2012-11-02 08:36 2011一、 AppWidget 在使用 Androi ... -
Android学习10-----Android组件通信 (7) 广播机制:Broadcast
2012-11-01 08:43 1484一、 广播: 广播也是一种信息的发送机制,在 ... -
Android学习10-----Android组件通信 (6) PendingIntent
2012-10-31 08:20 2210Intent 的主要功能是表示用 ... -
Android学习10-----Android组件通信 (5) Service
2012-10-30 08:25 1695Service 基本组成: ... -
Android学习10-----Android组件通信 (4) 消息机制
2012-10-29 08:22 1522在 Android 操作系统中存在着消息队列的操作 ... -
Android学习10-----Android组件通信 (3) ActivityGroup
2012-10-26 08:23 2271导航栏在 Android 中的应用是很常见的,前面 ... -
Android学习10-----Android组件通信 (2) Activity生命周期
2012-10-25 08:16 1255Activity 是整个 Android 平台的基 ... -
Android学习10-----Android组件通信 (1) Intent
2012-10-24 08:43 1942在一个项目之中,会由多个 Activity ...
相关推荐
本资源为Android项目中的下拉刷新控件,支持ListView和ScrollView两种视图。该控件具有高度可定制性,可根据您的需求进行二次开发。 该下拉刷新控件采用流畅的动画效果,提供轻松的用户体验。当用户下拉刷新时,...
1.ListView,循环滚动列表,固定尺寸项,屏幕可见范围外item会回收等待下一次。支持横向,竖向,多行多列。支持追加删除数据。支持上右下左padding,支持设置项目锚点。 * 初始化,传入各种参数,设置item class ``...
ViewCapture - 实现单独对某个Android视图进行截屏。支持ScrollView, HorizontalScrollView, ListView, RecyclerView, WebView。
最重要的是还全面介绍了如何利用原生的C,C++(NDK)和Python、Lua等脚本语言(AndroidScriptingEnvironment)来开发Android应用,《Android应用开发揭秘》实战性强,书中的每个知识点都有配精心设计的示例,尤为...
7.3.11 滚动视图(ScrollView)介绍与应用 7.3.12 进度条(ProgressBar)介绍与应用 7.3.13 拖动条(SeekBar)介绍与应用 7.3.14 评分组件(RatingBar)介绍与应用 7.3.15 图片视图(ImageView)介绍与应用 7.3.16 图片按钮...
Android中利用ViewPager实现视图切换 Android泡泡聊天界面的源码实现 android 实现EditText震动效果 Touch Index Bar (有锤子有真相) Android数据库最基础的一个例子(本人已测试,可以运行) 为launcher添加一个...
5.2.3 使用可滚动的视图——ScrollView 5.2.4文字的编辑 5.2.5 使用按钮——Button 5.2.6实例——计算器 5.2.7 使用图片按钮——ImageButton 5.2.8 使用复选框——CheckBox 5.2.9实例——请同意本协议 5.2.10 使用...
第1章 Android开发简介 1.1 Android基本概念 1.1.1 Android简介 1.1.2 Android的系统构架 1.1.3 Android应用程序框架 1.2 OMS介绍 1.2.1 OPhone介绍 1.2.2 Widget介绍 1.3 小结 第2章 Android开发环境搭建 2.1 ...
包括Android布局,弹窗,配色,单击事件,UI,精美炫酷的activity切换动画和空间动画,是新手必备的源码,内含相关的Dome 25件。 - - 文件夹 PATH 列表 卷序列号为 4E8D-6931 C:. │ .txt │ Android-UI-新手必备...
4.6.11、列表视图(List View) 96 4.6.12、NoteList 99 4.7、TAB与TABHOST 106 4.8、RATINGBAR 110 4.8.1、例一 110 4.8.2、例二 112 4.9、DATE/TIME SET 115 4.9.1、DatePicker/TimePicker 115 4.9.2、...
5.2.3 使用可滚动的视图——ScrollView 5.2.4文字的编辑 5.2.5 使用按钮——Button 5.2.6实例——计算器 5.2.7 使用图片按钮——ImageButton 5.2.8 使用复选框——CheckBox 5.2.9实例——请同意本协议 5.2.10 使用...
13.4、使用WebView视图显示网页: 13.5、使用WebService进行网络编程: 第14章、管理Android手机桌面 14.1、管理手机桌面: 14.2、改变手机壁纸: 14.3、桌面快捷方式: 14.4、管理桌面小控件: 14.5、实时...
13.4、使用WebView视图显示网页: 13.5、使用WebService进行网络编程: 第14章、管理Android手机桌面 14.1、管理手机桌面: 14.2、改变手机壁纸: 14.3、桌面快捷方式: 14.4、管理桌面小控件: 14.5、实时...
第1章 Android开发简介 1.1 Android基本概念 1.1.1 Android简介 1.1.2 Android的系统构架 1.1.3 Android应用程序框架 1.2 OMS介绍 1.2.1 OPhone介绍 1.2.2 Widget介绍 1.3 小结 第2章 Android...
《Android应用开发揭秘》全部实例源代码,配合《Android应用开发揭秘》使用 前言 第一部分 准备篇 第1章 Android开发简介 1.1 Android基本概念 1.1.1 Android简介 1.1.2 Android的系统构架 1.1.3 ...
6、 ListView 列表视图 7、WebView web视图 8、ToggleButton 动态布局效果 9、AnalogClock 、 DigitalClock and Chronometer 时钟和数字日期 10、AutoCompleteTextView 根据输入自动补充可能的全部 11、Spinner ...