可以通过ListView和ArrayAdapter两个类协助来完成:
1. 新建一个工程,将Layout文件的根视图改成ListView,当然也可以将ListView插到根视图里,这里用的是改根视图的方式:
代码
<!--<br/ /><br/ />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />http://www.CodeHighlighter.com/<br/ /><br/ />-->
<?
xml version="1.0" encoding="utf-8"
?>
< ListView xmlns:android ="http://schemas.android.com/apk/res/android"
android:layout_width ="fill_parent"
android:layout_height ="fill_parent"
android:id ="@+id/listview_main" >
</ ListView >
< ListView xmlns:android ="http://schemas.android.com/apk/res/android"
android:layout_width ="fill_parent"
android:layout_height ="fill_parent"
android:id ="@+id/listview_main" >
</ ListView >
2. 在Activty里面写下面的代码:
代码
<!--<br/ /><br/ />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />http://www.CodeHighlighter.com/<br/ /><br/ />-->
package
colin.demo;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;
import android.widget.AdapterView.OnItemClickListener;
public class MainFrom extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super .onCreate(savedInstanceState);
setContentView(R.layout.main);
// 取得ListView
mListView = (ListView)findViewById(R.id.listview_main);
// 创建一个ArrayAdapter
ArrayAdapter < String > uiDemoList = new ArrayAdapter < String > ( this , R.layout.textview_item, mDemoList);
mListView.setAdapter(uiDemoList);
// 使ListView支持过滤搜索
mListView.setTextFilterEnabled( true );
// 设置事件
mListView.setOnItemClickListener(mItemClickListenter);
}
private void ShowMessage(CharSequence msg)
{
if (mToast == null )
mToast = Toast.makeText( this , msg, Toast.LENGTH_LONG);
mToast.setText(msg);
mToast.show();
}
private OnItemClickListener mItemClickListenter = new OnItemClickListener()
{
@Override
public void onItemClick(AdapterView <?> parent, View view, int position, long id)
{
// 弹个Tooltip出来
ShowMessage(mDemoList[position]);
}
};
private Toast mToast;
private ListView mListView;
private String [] mDemoList =
{
" DemoView1 " , " DemoView2 " , " DemoView3 " ,
};
}
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;
import android.widget.AdapterView.OnItemClickListener;
public class MainFrom extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super .onCreate(savedInstanceState);
setContentView(R.layout.main);
// 取得ListView
mListView = (ListView)findViewById(R.id.listview_main);
// 创建一个ArrayAdapter
ArrayAdapter < String > uiDemoList = new ArrayAdapter < String > ( this , R.layout.textview_item, mDemoList);
mListView.setAdapter(uiDemoList);
// 使ListView支持过滤搜索
mListView.setTextFilterEnabled( true );
// 设置事件
mListView.setOnItemClickListener(mItemClickListenter);
}
private void ShowMessage(CharSequence msg)
{
if (mToast == null )
mToast = Toast.makeText( this , msg, Toast.LENGTH_LONG);
mToast.setText(msg);
mToast.show();
}
private OnItemClickListener mItemClickListenter = new OnItemClickListener()
{
@Override
public void onItemClick(AdapterView <?> parent, View view, int position, long id)
{
// 弹个Tooltip出来
ShowMessage(mDemoList[position]);
}
};
private Toast mToast;
private ListView mListView;
private String [] mDemoList =
{
" DemoView1 " , " DemoView2 " , " DemoView3 " ,
};
}
这里最重要的是ArrayAdapter的创建,构造函数声明如下:
public ArrayAdapter (Context context, int textViewResourceId, T[] objects)
*. textViewResourceId 这是一个Layout的资源ID,其根元素必须是一个TextView,显然ArrayAdpater要用这个TextView作为模板设置给ListView,让它作为ListView的一项显示。
*. Objects 是代表数据列表,ArrayAdapter会调用T的toString(),将它显示到TextView上。我们这里将T设为String类型,但其实它可以不是String的。
3. 上面看到ArrayAdapter需要一个Layout的ID,我们现在要创建这个Layout
*. 在Package Explorer的Res处右键菜单,点击New/Others...
*. 在弹出来的对话框处,选择Adroid/Android XML File
*. 在弹出来的对话框处,输入下面消息:
在File处输入textview_item.xml
在What type of resource would you like to create处选择Layout
在Select the root element for the XML file处选择TextView
*. 点击确定,就在res/layout目录下创建了一个textview_item.xml的布局文件。
你可以设置TextView的属性,这些设置都会反映到列表框中。
代码
<!--<br/ /><br/ />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />http://www.CodeHighlighter.com/<br/ /><br/ />-->
<?
xml version="1.0" encoding="utf-8"
?>
< TextView
xmlns:android ="http://schemas.android.com/apk/res/android"
android:layout_width ="fill_parent"
android:layout_height ="fill_parent" android:text ="text" android:textSize ="12pt" android:typeface ="sans" >
</ TextView >
< TextView
xmlns:android ="http://schemas.android.com/apk/res/android"
android:layout_width ="fill_parent"
android:layout_height ="fill_parent" android:text ="text" android:textSize ="12pt" android:typeface ="sans" >
</ TextView >
4. 最后运行程序,可以看到下面的程序:
上面的例子反映了视图与Adapter的关系,使用它们可以创建出很多样的界面,这是以后的主题了。
我们这里用的数据项是String,但事实上可以用其他的类,你可以自定义一个类,包含一些数据,然后覆盖toString()方法,返回字符串给ListView显示。