首先,listview 并不是单纯的靠一个部件实现的,而是通过继承ListActivity实现的,也就是说Activity是一个ListActivity。
然后定义一个ArraryAdapter<string>作为数据源
接着用setListAdapter将ArrayAdapter的内容附给listview
然后改写onListItemClick实现点击事件
你必须定义一个id为 android:id="@android:id/list" 的ListView 作为ListActivity的关联ListView
java文件
package com.example.listview;
import android.os.Bundle;
import android.app.ListActivity;//list视图
import android.view.View;//view的基类
import android.widget.*;//所有安卓部件
//加载必须的包
publicclassMainActivity extends ListActivity {
//主活动视图是继承自listActivity的
TextViewselection;
String[]items={"a","b","c","d","e","f","g","h","i","j"};
@Override
protectedvoidonCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
selection=(TextView)findViewById(R.id.selection);
ArrayAdapter<String> ala=newArrayAdapter<String>(this,android.R.layout.simple_expandable_list_item_1,items);
//新建一个ArrayAdapter《string》适配器
//其中有三个参数,第一个是拥有该适配器的主体,第二个是列表的视图样式(外观样子),第三个是数据列表
setListAdapter(ala);
//设置列表的适配器,必须在xml文件里面定义一个listview部件,同时将该部件的id设置为:android:id/list,
//个人猜想是listActivity会自动查找这个 id:android:id/list ,如果没有在xml设置一个id为 android:id/list 的
//listview会提出错误的。
}
publicvoid onListItemClick(ListView parent,View v,int postion,long id )
{
//重写了ListActivity的onListItemClick事件,也就是说,如果Activity是继承自ListActivity的话,
//那么你定义一个onListItemClick就表示你在重写onListItemClick事件了。
selection.setText(items[(int)id]);//与selection.setText(items[postion])等价
}
}
xml文件
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity" >
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello_world"
android:id="@+id/selection"
/>
<ListView
android:id="@android:id/list"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_below="@+id/selection" />
</Relat