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

目录
相关文章
|
5天前
|
API Android开发
Android高手进阶教程(十五)之---通过Location获取Address的使用!
Android高手进阶教程(十五)之---通过Location获取Address的使用!
10 1
|
5天前
|
存储 Java 开发工具
在Eclipse配置安装Android详细教程(新手)
在Eclipse配置安装Android详细教程(新手)
19 1
|
11天前
|
存储 安全 Android开发
安卓应用开发:构建一个高效的用户登录系统
【5月更文挑战第3天】在移动应用开发中,用户登录系统的设计与实现是至关重要的一环。对于安卓平台而言,一个高效、安全且用户体验友好的登录系统能够显著提升应用的用户留存率和市场竞争力。本文将探讨在安卓平台上实现用户登录系统的最佳实践,包括对最新身份验证技术的应用、安全性考量以及性能优化策略。
|
14天前
|
前端开发 Android开发 iOS开发
【Flutter前端技术开发专栏】Flutter在Android与iOS上的性能对比
【4月更文挑战第30天】Flutter 框架实现跨平台移动应用,通过一致的 UI 渲染(Skia 引擎)、热重载功能和响应式框架提高开发效率和用户体验。然而,Android 和 iOS 的系统差异、渲染机制及编译过程影响性能。性能对比显示,iOS 可能因硬件优化提供更流畅体验,而 Android 更具灵活性和广泛硬件支持。开发者可采用代码、资源优化和特定平台优化策略,利用性能分析工具提升应用性能。
【Flutter前端技术开发专栏】Flutter在Android与iOS上的性能对比
|
15天前
|
监控 Java Android开发
安卓应用开发:打造高效用户界面的五大策略
【4月更文挑战第29天】 在安卓应用开发的世界中,构建一个既美观又高效的用户界面(UI)对于吸引和保留用户至关重要。本文将深入探讨五种策略,这些策略可以帮助开发者优化安卓应用的UI性能。我们将从布局优化讲起,逐步过渡到绘制优化、内存管理、异步处理以及最终的用户交互细节调整。通过这些实践技巧,你将能够为用户提供流畅而直观的体验,确保你的应用在竞争激烈的市场中脱颖而出。
|
4天前
|
Java Android开发
Android开发--Intent-filter属性详解
Android开发--Intent-filter属性详解
10 0
|
4天前
|
物联网 Java 开发工具
安卓应用开发:打造未来移动生活
【5月更文挑战第10天】 随着科技的飞速发展,智能手机已成为我们日常生活中不可或缺的一部分。作为智能手机市场的两大巨头,安卓和iOS分别占据了一定的市场份额。在这篇文章中,我们将重点关注安卓应用开发,探讨如何利用先进的技术和创新思维,为用户打造更加便捷、智能的移动生活。文章将涵盖安卓应用开发的基本概念、关键技术、以及未来发展趋势等方面的内容。
|
5天前
|
XML Java Android开发
如何美化android程序:自定义ListView背景
如何美化android程序:自定义ListView背景
|
5天前
|
Android开发
Android教程之Android 用户界面-表格视图(GridView)
Android教程之Android 用户界面-表格视图(GridView)
10 1
|
6天前
|
Java API 开发工具
java与Android开发入门指南
java与Android开发入门指南
14 0