在Android开发中经常需要用到ListView和GirdView绑定实现数据,如果有过ASP.NET开发经验就会知道GirdView的系列数据控件,那么在Android上面叫做复合控件/composite,同样用以显示列表数据。但是在android上面的GridView提供更多的自定义功能。本文将展示android上的ListView和GirdView使用。
ListView 部分
在eclipse中新建项目Android项目(File 〉New 〉Other 〉Android Project),可以参考NetBeans和Eclipse的Android开发,建立Android项目之后在项目目录的"res/layout"找到"main.xml",将main.xml切换到Graphical Layout模式下(图形可视化模式),然后再左侧的 组件中找到"Composite"中找到"ListView"拖拽至 右侧的main.xml视图中,如下图显示。
在main.xml中可以定义ListView的属性参数,如背景android:background、边距android:padding、显示android:visibility等属性定义这和网页CSS相似,在本示例中以默认属性显示。在main.xml中完成界面定义之后,打开项目的"scr"展开目录,打开"AndroidListViewActivity"这个是项目的名称,com.weisim3为建项目时所设置的包名。将AndroidListViewActivity继承Activity改为ListActivity,ListActivity继承了Activity用以List数据/数组绑定,可以参考官方的介绍http://developer.android.com/reference/android/app/ListActivity.html,可以看到android.app.ListActivity节点上面有android.app.Activity。接着建立一个数组传给ArrayAdapter,然后让ListView绑定ArrayAdapter加载的数据。ArrayAdapter官方介绍http://developer.android.com/reference/android/widget/ArrayAdapter.html。下面是详细代码展示。
package com.weisim3; import android.app.ListActivity; import android.os.Bundle; import android.widget.ArrayAdapter; //Copyright (C) weisim3.com 16.11.2011 //Android的ListView和GridView使用 public class AndroidListViewActivity extends ListActivity { /** Called when the activity is first created. */ public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); String[] valueList = new String[] { "Android 4", "iPhone 4S", "Windows Phone 7.5","Blackberry", "Mac OS", "Windows 8", "Linux"}; ArrayAdapter<String> ad = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, valueList); setListAdapter(ad); } }
<?xml version="1.0" encoding="utf-8"?> <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <ListView android:id="@+android:id/list" android:layout_width="match_parent" android:layout_height="wrap_content" > </ListView> </LinearLayout>
效果如下
GridView部分
GridView和上面类似先定义一个数组,然后将数据传给ArrayAdapter,让GridView绑定ArrayAdapter,在这里main.xml加入了三个GridView分别的android:id为@+id/grid、@+id/grid02、@+id/grid03,以不同方数据列显示。下面是详细代码。
<?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" > <GridView android:layout_width="fill_parent" android:layout_height="wrap_content" android:id="@+id/grid" /> <GridView android:layout_width="fill_parent" android:layout_height="wrap_content" android:id="@+id/grid02" android:numColumns="2" /> <GridView android:layout_width="fill_parent" android:layout_height="wrap_content" android:id="@+id/grid03" /> </LinearLayout>
package com.weisim3; import android.app.Activity; import android.os.Bundle; import android.widget.ArrayAdapter; import android.widget.GridView; //Copyright (C) weisim3.com 16.11.2011 //Android的ListView和GridView使用 public class GridViewActivity extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); final String [] itemList=new String[]{"北京","香港","台北","上海"}; ArrayAdapter<String> ad= new ArrayAdapter(this, android.R.layout.simple_list_item_1,itemList); GridView grid=(GridView)findViewById(R.id.grid); grid.setAdapter(ad); GridView grid02=(GridView)findViewById(R.id.grid02); grid02.setAdapter(ad); grid02.setNumColumns(2); GridView grid03=(GridView)findViewById(R.id.grid03); grid03.setAdapter(ad); grid03.setNumColumns(3); } }
效果如下
示例下载提示,在解压缩之后,Eclipse导入项目/Import在General中选取Existing Projects into Workspace导入项目,需要指定android模拟器,在项目目录右键点击Properties,然后再Android选项中的Project Build Target钩选Android模拟器。