使用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();
  
 }
 } 
}

这样,我们就完成了!

界面效果如下:

 

posted @ 2014-10-22 13:33  龙沙  Views(357)  Comments(0)    收藏  举报