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

简介: ListView 控件是一个非常强大的控件. 它可以以非常雅致的方式来显示长的或者短的列表. 建立一个ListView 非常简单: Code: Sub Globals Dim ListView1 As ListViewEnd SubSub Activity_Create(FirstTime As Boolean)    ListView1.

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

建立一个ListView 非常简单:

Code:
Sub Globals
 
Dim ListView1 As ListView
End Sub

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



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

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



这是相关代码:

Code:
Dim Bitmap1 As Bitmap
Bitmap1.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 = 100dip
ListView1.SingleLineLayout.Label.TextSize = 
20
ListView1.SingleLineLayout.Label.TextColor = 
Colors.Blue
ListView1.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 = 100dip
Dim?label1 As Label
label1 = ListView1.SingleLineLayout.Label 
'set the label to the model label.
label1.TextSize = 20
label1.TextColor = 
Colors.Blue
label1.Gravity = 
Gravity.CENTER

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

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

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

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

Code:
Dim GD As GradientDrawable
GD.Initialize(
"TR_BL"Array As Int(Colors.Gray,Colors.LightGray))
Activity.Background = GD
ListView1.ScrollingBackgroundColor = 
Colors.Transparent

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

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

Code:
ListView1.FastScrollEnabled = true



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

目录
相关文章
|
2天前
|
JavaScript 搜索推荐 Android开发
【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
21 8
【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
|
14天前
|
前端开发 Java Shell
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
113 20
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
|
12天前
|
Dart 前端开发 Android开发
【09】flutter首页进行了完善-采用android studio 进行真机调试开发-增加了直播间列表和短视频人物列表-增加了用户中心-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
【09】flutter首页进行了完善-采用android studio 进行真机调试开发-增加了直播间列表和短视频人物列表-增加了用户中心-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
35 4
【09】flutter首页进行了完善-采用android studio 进行真机调试开发-增加了直播间列表和短视频人物列表-增加了用户中心-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
|
27天前
|
缓存 前端开发 Android开发
【04】flutter补打包流程的签名过程-APP安卓调试配置-结构化项目目录-完善注册相关页面-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程
【04】flutter补打包流程的签名过程-APP安卓调试配置-结构化项目目录-完善注册相关页面-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程
76 12
【04】flutter补打包流程的签名过程-APP安卓调试配置-结构化项目目录-完善注册相关页面-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程
|
1月前
|
Dart 前端开发 Android开发
【02】写一个注册页面以及配置打包选项打包安卓apk测试—开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
【02】写一个注册页面以及配置打包选项打包安卓apk测试—开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
36 1
【02】写一个注册页面以及配置打包选项打包安卓apk测试—开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
|
2月前
|
搜索推荐 前端开发 API
探索安卓开发中的自定义视图:打造个性化用户界面
在安卓应用开发的广阔天地中,自定义视图是一块神奇的画布,让开发者能够突破标准控件的限制,绘制出独一无二的用户界面。本文将带你走进自定义视图的世界,从基础概念到实战技巧,逐步揭示如何在安卓平台上创建和运用自定义视图来提升用户体验。无论你是初学者还是有一定经验的开发者,这篇文章都将为你打开新的视野,让你的应用在众多同质化产品中脱颖而出。
77 19
|
2月前
|
JSON Java API
探索安卓开发:打造你的首个天气应用
在这篇技术指南中,我们将一起潜入安卓开发的海洋,学习如何从零开始构建一个简单的天气应用。通过这个实践项目,你将掌握安卓开发的核心概念、界面设计、网络编程以及数据解析等技能。无论你是初学者还是有一定基础的开发者,这篇文章都将为你提供一个清晰的路线图和实用的代码示例,帮助你在安卓开发的道路上迈出坚实的一步。让我们一起开始这段旅程,打造属于你自己的第一个安卓应用吧!
91 14
|
2月前
|
开发框架 Android开发 iOS开发
安卓与iOS开发中的跨平台策略:一次编码,多平台部署
在移动应用开发的广阔天地中,安卓和iOS两大阵营各占一方。随着技术的发展,跨平台开发框架应运而生,它们承诺着“一次编码,到处运行”的便捷。本文将深入探讨跨平台开发的现状、挑战以及未来趋势,同时通过代码示例揭示跨平台工具的实际运用。
173 3
|
2月前
|
搜索推荐 前端开发 测试技术
打造个性化安卓应用:从设计到开发的全面指南
在这个数字时代,拥有一个定制的移动应用不仅是一种趋势,更是个人或企业品牌的重要延伸。本文将引导你通过一系列简单易懂的步骤,从构思你的应用理念开始,直至实现一个功能齐全的安卓应用。无论你是编程新手还是希望拓展技能的开发者,这篇文章都将为你提供必要的工具和知识,帮助你将创意转化为现实。
|
2月前
|
Java Android开发 开发者
探索安卓开发:构建你的第一个“Hello World”应用
在安卓开发的浩瀚海洋中,每个新手都渴望扬帆起航。本文将作为你的指南针,引领你通过创建一个简单的“Hello World”应用,迈出安卓开发的第一步。我们将一起搭建开发环境、了解基本概念,并编写第一行代码。就像印度圣雄甘地所说:“你必须成为你希望在世界上看到的改变。”让我们一起开始这段旅程,成为我们想要见到的开发者吧!
84 0

热门文章

最新文章

  • 1
    如何修复 Android 和 Windows 不支持视频编解码器的问题?
  • 2
    【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
  • 3
    当flutter react native 等混开框架-并且用vscode-idea等编译器无法打包apk,打包安卓不成功怎么办-直接用android studio如何打包安卓apk -重要-优雅草卓伊凡
  • 4
    【04】flutter补打包流程的签名过程-APP安卓调试配置-结构化项目目录-完善注册相关页面-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程
  • 5
    APP-国内主流安卓商店-应用市场-鸿蒙商店上架之必备前提·全国公安安全信息评估报告如何申请-需要安全评估报告的资料是哪些-优雅草卓伊凡全程操作
  • 6
    【09】flutter首页进行了完善-采用android studio 进行真机调试开发-增加了直播间列表和短视频人物列表-增加了用户中心-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
  • 7
    Android经典面试题之Kotlin中Lambda表达式和匿名函数的区别
  • 8
    【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
  • 9
    【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
  • 10
    Android学习自定义View(四)——继承控件(滑动时ListView的Item出现删除按钮)