basic4android 开发教程翻译(八)使用ListView

ListView 控件是一个非常强大的控件. 它可以以非常雅致的方式来显示长的或者短的列表.

建立一个ListView 非常简单:

Code:

Sub Globals Dim ListView1 As ListViewEnd Sub

Sub Activity_Create(FirstTime As Boolean)    ListView1.Initialize("ListView1")    For i = 1 To 300       ListView1.AddSingleLine("Item #" & i)    Next    Activity.AddView(ListView1, 0, 0, 100%x, 100%y)End SubSub ListView1_ItemClick (Position As Int, Value As Object) Activity.Title = ValueEnd Sub

ListView既可以通过程序加入,也可以通过设计器加入. 在这里必须通过代码来添加.
代码说明:
- ListView1.Initialize("ListView1") - 在这里我们初始化一个列表,并将事件名的属性设置为ListView1.这意味着,为了捕获它的相应事件, 我们需要使用类似:ListView1_ItemClick 这样的子程.
- ListView1.AddSingleLine - 增加一个单行项目.
- Activity.AddView(ListView1, 0, 0, 100%x, 100%y) - 注意使用的百分比单位. 我们设置它的高和宽与activity的值一样.

当前有三种类型的项目: 单行, 两行和两行加位图.
每种类型都可以定制. 默认如下图:

这是相关代码:

Code:

Dim Bitmap1 As BitmapBitmap1.Initialize(File.DirAssets, "button.gif")For i = 1 To 300  ListView1.AddSingleLine("Item #" & i)  ListView1.AddTwoLines("Item #" & i, "This is the second line.")  ListView1.AddTwoLinesAndBitmap("Item #" & i, "This is the second line.", Bitmap1)Next

我们可以给不同的项目设置不同的位图. 请注意这个代码载入一个叫button.gif的图形文件. 这个文件应该被加入到Files页面(在IDE的右面板). 你可以从本文的附件里面下载这个工程.

定制每种类型
这三种类型都可以被定制. 并会改变所有的这种类型.
ListView有三个"模式" 并被保存在下面:
- SingleLineLayout
- TwoLinesLayout
- TwoLinesAndBitmap

每一种模式都有一个ItemHeight属性,一个 Background 属性和更多的views属性. 再说一次,如果你改变这些属性的话,它会影响所有这种类型的项目.
Example of customizing the single line items:

Code:

ListView1.SingleLineLayout.ItemHeight = 100dipListView1.SingleLineLayout.Label.TextSize = 20ListView1.SingleLineLayout.Label.TextColor = Colors.BlueListView1.SingleLineLayout.Label.Gravity = Gravity.CENTER  For i = 1 To 300    ListView1.AddSingleLine("Item #" & i)    ListView1.AddTwoLines("Item #" & i, "This is the second line.")    ListView1.AddTwoLinesAndBitmap("Item #" & i, "This is the second line.", Bitmap1) Next

结果如图:

注意这里把ItemHeight设为100dip. 'dip'单位导致它会按照当前设备的比例自动缩放. 而对于TextSize来说会有一个误区,因为文本大小已经是通过比例单位计算的.

下面的代码与上面的功能相似(这个更清晰):

Code:

ListView1.SingleLineLayout.ItemHeight = 100dipDim?label1 As Labellabel1 = ListView1.SingleLineLayout.Label 'set the label to the model label.label1.TextSize = 20label1.TextColor = Colors.Bluelabel1.Gravity = Gravity.CENTER

你可以采用类似的方法来改变其他类型的外观.
其他类型有另外的views: SecondLabel 和 ImageView.

返回值
首先应该注意,可能会没有选中的项目.这是因为同时使用手指滑动和滚轮或键盘滑动的组合造成其没有相关选项 .
你应该捕获ItemClick事件并处理点中的项目.
点中的项目的值会被作为参数传递进来.
现在,项目的值是什么呢?
默认的值是第一行保存的文本.
然而,你可以把它改变为任何你喜欢使用的对象:
AddSingleLine2, AddTwoLines2 和 AddTwoLinesAndBitmap2 三个方法接受一个另外附加的参数作为返回值.. 这个就可以让你的应用可以传递更多的信息.

背景优化
ListView有一个隐藏的假定的背景是纯黑.如果你设置背景为其它类型的话,例如过渡背景和图像 , 在滑动过程中会发现背景消失了.
你可以使用ScrollingBackgroundColor属性来改变背景的滑动颜色.如果背景不是纯色 的话,把它设置为Colors.Transparent.

示例 (activity的背景是过渡的):

Code:

Dim GD As GradientDrawableGD.Initialize("TR_BL", Array As Int(Colors.Gray,Colors.LightGray))Activity.Background = GDListView1.ScrollingBackgroundColor = Colors.Transparent

提示
如果你想单行项目带有位图(不想使用两行带位图),你可以设置第二个标签的visible属性为false .

如果有非常多的项目,你应该使用快速滚动器:

Code:

ListView1.FastScrollEnabled = true

在这里下载小范例: http://www.basic4ppc.com/android/fil...s/ListView.zip

时间: 2024-10-01 17:44:21

basic4android 开发教程翻译(八)使用ListView的相关文章

basic4android 开发教程翻译(四)调试应用程序

这个教程说明在Basic4android v1.50 后加入的新的调试功能及其他相关的工具. 在Project菜单下有一个叫Attach Debugger的新选项. 如果这个选项是选上的话,那么编译的的代码就会包含调试代码. 调试代码允许IDE 与程序建立连接并检查它的运行. 当程序运行时,首先会等10秒钟与IDE 建立连接. 通常IDE 会很快连接上的. 然而当你手工从电话上运行这个程序时,就会看到这个等待. 编译的APK文件会以 _DEBUG.apk后缀保存.由于这个文件包含调试信息,因此一

basic4android 开发教程翻译(二)可视化设计与猜数字程序

要学习本教程,请先参考下面的教程:安装 Basic4android 和 Android SDKHello world - 安装Android 模拟器 在这个教程里面我们要使用设计器来建立layout. 这个layout包括一个文本框和一个按钮. 用户需要猜一个随机的数字. 用户在文本框里面输入数字并通过点按钮提交猜的数字. 然后系统会通过"toast"信息来给用户提示其输入的数字比系统选择的数字大还是小. - 建立一个新工程并保存它. -选择菜单来打开设计器. 设计器有两部分组成.一部

basic4android 开发教程翻译(七)Basic4android中的对象和类型

类型 Basic4android的类型系统是直接从Java的类型系统中派生的. 有两种类型的变量: 基本类型 and 非基本类型. 基本类型包括数字类型: Byte, Short, Int, Long, Float 和 Double. 基本类型也包括: Boolean 和 Char. 类型及范围列表: http://www.basic4ppc.com/forum/basic...html#post45511 但函数调用或者赋值时,基本类型总是直接把值传递过去. 例如: Code: Sub S1 

basic4android 开发教程翻译(五)Android进程及activitys 生存周期

简而言之 : 每个 Basic4android 程序在它自己的进程中运行. 一个进程拥有一个主线程,这个主线程也叫做UI 线程,它会一直运行到进程结束.一个进程也可以有好几个线程,这些线程用来做一些后台工作. 当用户启动一个应用时,一个进程就开始了工作, 假设其并没有已经在后台运行. 进程的结束是不确定的. 有时可能发生在用户或者系统关闭掉所有的activities后. 假设你有一个activity,当用户按了返回键,这个activity被关闭了. 以后当电话的内存不够时这个进程就会退出了(最后

basic4android 开发教程翻译(三)IDE 小贴士

basic4android 的 IDE 功能强大,它帮助你专注于写代码和建立你的应用. 下面列出一些不容易发现的特色: - Ctrl + Space = 自动完成 按 Ctrl + Space 激活自动完成功能,它会把得到的关键字,变量,模块,方法,子程,属性,字段等以列表显示出来 . 并且在很多时候会列出这些项目的描述. 在写了一些字母后按 Ctrl + Space通常会自动出现以这些字母开头的项目. - 工具提示信息 - 当写方法的参数时,工具提示会显示方法的定义和描述. 工具提示有时可能会

basic4android 开发教程翻译(九)使用GPS

GPS在很多Android设备上扮演很重要的角色. 幸运的是可以很方便的使其工作起来. 在这个教程里面我们将完成一个程序,它可以显示当前位置并显示卫星状态. GPS功能被封装在GPS库里面. 因此我们首先要把这个库加入到引用里面: 与其相关的有种类型.最主要的是GPS. GPS管理连接和事件. 第二个是Location. Location是一个结构,它保存着经度和纬度坐标的修正值,还有其它信息,例如方向, 高度等等. 有时出现得不到所有的信息(例如,信号比较弱). Location也包含其他功能

Android LibGDX游戏引擎开发教程(八) 中文字体的显示和绘制(下)

在上一篇的文章中,我们介绍了Hiero这个非常好用工具的使用,但是LIbgdx的BitmapFont不支持多图,常 用汉字3500个,你总不能用hiero自己做吧,那怎么办呢?这其实微软早就解决这个问题了,它给我们提供了 这个TTF字库,保存汉字字,方便我们使用. 一.FreeType的使用 1.打开解压好的0.9.8版的 包,找到里面的extensions文件夹 开发教程(八) 中文字体的显示和绘制(下)-android 绘制字体"> 打开后,再点击进入gdx-freetype文件夹 找

Senparc.Weixin.MP SDK 微信公众平台开发教程(八):通用接口说明

原文:Senparc.Weixin.MP SDK 微信公众平台开发教程(八):通用接口说明 一.基础说明     这里说的"通用接口(CommonAPIs)"是使用微信公众账号一系列高级功能的必备验证功能(应用于开发模式).     我们通过微信后台唯一的凭证,向通用接口发出请求,得到访问令牌(AccessToken),然后使用访问令牌去使用各项需要身份验证的高级功能,例如自定义菜单.获取用户信息.单发消息.群发消息等等.     目前所有的服务号和通过认证的订阅号,都可以在微信公众账

微信公众平台开发教程(八)Session处理问题_实用技巧

在微信窗口,输入的信息有限,我们需要将一些信息分多次请求. 比如:在进行用户绑定时,我们需要输入用户的相关信息,比如:用户名.密码,或者姓名.电话号码,服务端验证通过,即可将系统用户与微信用户绑定. 然后,此微信账户就有一定的功能权限了,可以查积分,消费记录等.服务号:招商银行信用卡,就有很多功能. 微信客户端无法缓存信息,而且输入信息有限,需要进行多次请求,在服务端保存当前会话状态.这就需要Session. 本文以用户认证,绑定账号为例,来说明具体处理. 一.创建通用的Session处理机制.