当前位置: 首页 > news >正文

android常用控件(三)- ProgressBar、ListView

Android常用控件(三)- ProgressBar、ListView 
一、 ProgressBar(进度条)的使用 
示例1:一个应用程序有2个ProgressBar,让进度条显示进度。 
开发步骤: 
1、 新建一个android项目 
2、 在main.xml布局文件中先添加1个ProgressBar控件(firstProgressBar),设置这个进度条是以水平方式展示的,然后再设置这个控件为不显示(这里暂时不显示,我们在后面的程序中写代码将这个控件设置为显示) 
3、 在main.xml布局文件中再添加1个ProgressBar控件(secondProgressBar),设置该标签的显示样式为默认的(是一个转动的圆圈),然后再同样设置这个控件暂时为不显示 
4、 在main.xml布局文件中再添加一个Button控件 
5、 在Activity中编写代码,先获得这2个ProgressBar和Button对象 
6、 然后编写一个监听器,设置进度条的进度,当每点击一次Button,进度则增加10 
7、 将监听器绑定到Button对象上 
下图为main.xml布局文件的片段: 

 

Activity的代码在这里就没有贴出来了,项目源码已经上传,有需要的可以下载。 
最后项目实现的效果为: 

 

二、 ListView的使用 
ListView的使用相对于之前使用到的一些控件而言要复杂一点,在这里呢,同样是通过一个示例来讲解,但是在这过程中,可能有些理解没有很准确或者注释的不是准确的地方,到时候有什么问题还请大家多多指点指点哦~ 
(如果各位E文比较好的可以去官网查看更详细的说明) 
示例2:一个应用程序有一个ListView,显示三行信息。 
最后项目实现的效果为: 

 

开发步骤: 
1、 新建一个Android应用程序 
2、 在布局文件中再添加一个LinearLayout(应用程序新建的时候默认的布局文件里就已经有了一个LinearLayout,现在再添加一个),设置这个LinearLayout的一些属性。 
3、 在LinearLayout中添加一个ListView,并设置一些属性。 

 

4、 新建一个布局文件,这个布局文件呢,是用来布局和显示ListView里面的内容的(我是这样理解的,不知道大家能不能理解哈)。先在这个布局文件中添加一个LinearLayout,然后在LinearLayout中添加两个TextView,表示显示两列数据(如果需要显示多列数据的话当然就是添加多个TextView了)。 

Xml代码 
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     android:orientation="horizontal"  
  4.     android:layout_width="fill_parent"  
  5.     android:layout_height="fill_parent"  
  6.     android:paddingTop="1dip"  
  7.     android:paddingBottom="1dip"  
  8.     android:paddingLeft="10dip"  
  9.     android:paddingRight="10dip"  
  10. >  
  11.     <TextView  
  12.         android:id="@+id/user_name"  
  13.         android:layout_width="180dip"  
  14.         android:layout_height="30dip"  
  15.         android:textSize="10pt"  
  16.         android:singleLine="true"  
  17.     />  
  18.     <TextView  
  19.         android:id="@+id/user_ip"  
  20.         android:layout_width="wrap_content"  
  21.         android:layout_height="wrap_content"  
  22.         android:textSize="10pt"  
  23.         android:gravity="right"  
  24.     />  
  25. </LinearLayout>  


5、 编写Activity 
a) 首先要注意的是,这个Activity他继承的不是Activity,而是ListActivity。 
b) 创建一个ArrayList,里面存放的是HashMap,而HashMap的键值对都是String类型。 
c) 分别往3个HashMap中存储值 
d) 将3个HashMap添加到ArrayList中 
e) 创建适配器 
f) 绑定到适配器 
g) 编写行的点击事件 
Java代码 
  1. package android.listview;  
  2.   
  3. import java.util.ArrayList;  
  4. import java.util.HashMap;  
  5.   
  6. import android.app.ListActivity;  
  7. import android.os.Bundle;  
  8. import android.view.View;  
  9. import android.widget.ListView;  
  10. import android.widget.SimpleAdapter;  
  11.   
  12. //注意:这里继承的是ListActivity,而不是Activity  
  13. public class ListViewTest extends ListActivity {  
  14.     /** Called when the activity is first created. */  
  15.     @Override  
  16.     public void onCreate(Bundle savedInstanceState) {  
  17.         super.onCreate(savedInstanceState);  
  18.         setContentView(R.layout.main);  
  19.   
  20.         // 创建一个ArrayList,ArrayList里面存放的是HashMap,而HashMap的键值对都是String类型  
  21.         ArrayList<HashMap<String, String>> list = new ArrayList<HashMap<String, String>>();  
  22.         HashMap<String, String> map1 = new HashMap<String, String>();  
  23.         HashMap<String, String> map2 = new HashMap<String, String>();  
  24.         HashMap<String, String> map3 = new HashMap<String, String>();  
  25.         // 分别往3个HashMap中存储值  
  26.         map1.put("user_name""zhangsan");  
  27.         map1.put("user_ip""192.168.0.1");  
  28.         map2.put("user_name""lisi");  
  29.         map2.put("user_ip""192.168.0.2");  
  30.         map3.put("user_name""wangwu");  
  31.         map3.put("user_ip""192.168.0.3");  
  32.         // 将3个HashMap添加到ArrayList中  
  33.         list.add(map1);  
  34.         list.add(map2);  
  35.         list.add(map3);  
  36.         //创建适配器  
  37.         //第一个参数Content:上下文  
  38.         //第二个参数List<? extends Map<String, ?>>:ArrayList对象,ArrayList里面存放的是HashMap,而HashMap的键值对都是String类型  
  39.         //第三个参数int resource:内容显示的布局文件  
  40.         //第四个参数String[] from:被添加到ArrayList中的HashMap中key的名称,要显示的列  
  41.         //第五个参数int[] to:内容显示的布局文件中,显示内容的控件id  
  42.         SimpleAdapter listAdapter = new SimpleAdapter(this, list,  
  43.                 R.layout.user, new String[] { "user_name""user_ip" },  
  44.                 new int[] { R.id.user_name, R.id.user_ip });  
  45.         //绑定到适配器。  
  46.         setListAdapter(listAdapter);  
  47.     }  
  48.   
  49.     /** 
  50.      * 列表当中一行的点击事件 
  51.      * ListView:ListView对象本身 
  52.      * View:被选中的那一行的View对象 
  53.      * position:被选中的那一行的位置 
  54.      * id:被选中的那一行的id 
  55.      */  
  56.     @Override  
  57.     protected void onListItemClick(ListView l, View v, int position, long id) {  
  58.         // TODO Auto-generated method stub  
  59.         super.onListItemClick(l, v, position, id);  
  60.         //打印出被选中的那一行的位置和id,计数都是从0开始  
  61.         System.out.println("-------------"+position);  
  62.         System.out.println("-------------"+id);  
  63.     }  
  64. }  

from:http://byandby.javaeye.com/blog/831539

相关文章:

  • 【Android2D游戏开发之二】剖析游戏开发用view还是sarfaceView
  • android中 自定义两个View进行画图,如何让其各自刷新重绘
  • ActivityGroup实现Tab分页标签
  • 自定义Menu(TabMenu)
  • Android上图像处理-倒影,圆角,渐变
  • Activity的任务堆栈学习笔记(一)
  • activity的任务堆栈学习笔记二
  • Android 简史
  • android textview 中超出屏幕宽度的字符 省略号显示
  • 【原创·视频·教程】大话优酷、酷六类视频网站Android端软件开发
  • Android线程相关
  • 横竖屏切换时候activity的生命周期 android:configChanges
  • 以Dialog形式显示Activity
  • Android面试题
  • Windows下JNI生成头文件
  • 8年软件测试工程师感悟——写给还在迷茫中的朋友
  • Angularjs之国际化
  • AngularJS指令开发(1)——参数详解
  • Babel配置的不完全指南
  • eclipse(luna)创建web工程
  • Fabric架构演变之路
  • GitUp, 你不可错过的秀外慧中的git工具
  • java 多线程基础, 我觉得还是有必要看看的
  • Laravel Telescope:优雅的应用调试工具
  • Lucene解析 - 基本概念
  • MySQL-事务管理(基础)
  • PAT A1092
  • Python socket服务器端、客户端传送信息
  • react-core-image-upload 一款轻量级图片上传裁剪插件
  • Service Worker
  • Vue2.x学习三:事件处理生命周期钩子
  • Webpack 4x 之路 ( 四 )
  • webpack4 一点通
  • 订阅Forge Viewer所有的事件
  • 基于axios的vue插件,让http请求更简单
  • 基于OpenResty的Lua Web框架lor0.0.2预览版发布
  • 理解IaaS, PaaS, SaaS等云模型 (Cloud Models)
  • 那些被忽略的 JavaScript 数组方法细节
  • 如何利用MongoDB打造TOP榜小程序
  • 腾讯大梁:DevOps最后一棒,有效构建海量运营的持续反馈能力
  • 要让cordova项目适配iphoneX + ios11.4,总共要几步?三步
  • 移动端解决方案学习记录
  • 职业生涯 一个六年开发经验的女程序员的心声。
  • 走向全栈之MongoDB的使用
  • nb
  • ​​​​​​​GitLab 之 GitLab-Runner 安装,配置与问题汇总
  • ​HTTP与HTTPS:网络通信的安全卫士
  • ​ssh免密码登录设置及问题总结
  • #NOIP 2014# day.1 T2 联合权值
  • (1)(1.8) MSP(MultiWii 串行协议)(4.1 版)
  • (2)(2.4) TerraRanger Tower/Tower EVO(360度)
  • (Note)C++中的继承方式
  • (附源码)springboot掌上博客系统 毕业设计063131
  • (亲测有效)解决windows11无法使用1500000波特率的问题
  • (数据结构)顺序表的定义