使用ListView创建垂直列表的一个例子
(注:该例子源自《Android 应用开发》一书)
首先,我们在values文件夹下的strings.xml文件中,作用是定义一个字符串数组,作为列表项的文本内容
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">MyListTest</string>
<string name="main_menu">main_menu</string>
<string name="action_settings">Settings</string>
<string-array name="menu_entries">
<item>Menu Item One</item>
<item>Menu Item Two</item>
<item>Menu Item Three</item>
</string-array>
</resources>
下面,我们编写布局文件main.xml,作用是设置界面包含一个大标题和一个垂直菜单:
//定义一个垂直分布的线性布局
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
>
//定义一个文本框,用于在列表项之上显示一个大标题“main_menu”
(注:“main_menu”引用的是strings.xml文件中定义的字符串)
<TextView
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:gravity="center"
android:text="@string/main_menu"
android:textSize="40dp" />
//定义一个ListView
<ListView
android:id="@android:id/list"
android:layout_width="fill_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:gravity="center"
></ListView>
</LinearLayout>
然后,我们新建一个布局文件element.xml,作用是用来设置每个列表项的外观形式
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:gravity="center"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="20dp"
android:padding="15dp"
/>
最后,我们在java文件Main.java中,编写如下脚本:
package com.example.mylisttest;
import android.app.ListActivity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
public class Main extends ListActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
/*
* 创建一个内容适配器
* ArrayAdapter。createFromResource()方法的作用是从指定的外部资源创建衣蛾ArrayAdapter
* 该方法有3个参数
* 第一个参数:这个应用的当前环境
* 第二个参数:用来做数据源的数组的标识符
* 第三个参数:用来创建视图的布局文件的标识符
*/
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource
(getApplicationContext(), R.array.menu_entries, R.layout.element);
//设置适配器
setListAdapter(adapter);
//当列表项被单击时,弹出一个消息提示
@Override
public void onListItemClick(ListView lv,View clickedView,int position,long id){
super.onListItemClick(lv,clickedView,position,id);
TextView tv = (TextView)clickedView;
//生成一个标准的消息提示,第一个参数四要使用的环境,第二个参数是要使用的字符串资源,第三个参数是信息显示的时间长度
Toast.makeText(
getApplicationContext(),
"List Item "+ tv.getText()+" was clicked!",
Toast.LENGTH_SHORT).show();
}
}
}
这样,我们就完成了!
界面效果如下:

浙公网安备 33010602011771号