ListView列表控件,能够在以列表的形式显示出来的视图,效果如下图所示:
并且能够选择其中的某个项,触发事件。
listView构建需要两个布局文件,主布局文件负责整个布局main.xml,另外一个负责listView如何显示的user.xml:
main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<ListView android:id="@id/android:list"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:drawSelectorOnTop="false"
android:scrollbars="vertical"></ListView>
</LinearLayout>
user.xml在Activity中显示方式,线性的水平布局
<?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="horizontal"
android:padding="10dip">
<TextView android:id="@+id/user_name" android:layout_width="180dip"
android:layout_height="30dip"
android:textSize="10pt"
android:singleLine="false"/>
<TextView android:id="@+id/user_ip" android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:textSize="10pt"
android:singleLine="false"/>
</LinearLayout>
在Activity类写列表的显示内容,以及相应的监听器:
public class Activity_listView extends ListActivity {
private ArrayList<HashMap<String, String>> list = new ArrayList<HashMap<String,String>>();
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
HashMap<String, String> map1 = new HashMap<String, String>();
HashMap<String, String> map2 = new HashMap<String, String>();
HashMap<String, String> map3 = new HashMap<String, String>();
map1.put("user_name", "gap");
map1.put("user_ip", "192.168.1.0");
map2.put("user_name", "lei");
map2.put("user_ip", "192.168.1.1");
map3.put("user_name", "li");
map3.put("user_ip", "192.168.1.2");
list.add(map1);
list.add(map2);
list.add(map3);
/**
* 这是一种适配器模式,An easy adapter to map static data to views defined in an XML file.
* 参数一 Context就是该Activity
* 参数二 就是上边声明的那个ArrayList对象
* 参数三 这个参数用来指定 我们一行数据 的key 也就是一个map对象的key 上下结合看一下 因为我们一条数据也就是一行
* 对应一个map对象 一个map对象包含2个数据 即 user_name 和 user_ip 这个参数就是用来指定这2个key 这里是通过String数组的方式
* 参数四 大家一看就知道了 意思是 user_name 这条数据用 R.id.user_name 这个TextView显示 user_ip 这条数据用
* R.id.user_ip 显示
*/
SimpleAdapter listAdapter = new SimpleAdapter(this, list, R.layout.user, new String[]{"user_name", "user_ip"},
new int[] {R.id.user_name, R.id.user_ip});
setListAdapter(listAdapter);
}
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
// TODO Auto-generated method stub
super.onListItemClick(l, v, position, id);
Toast.makeText(Activity_listView.this, list.get(position).get("user_name"), Toast.LENGTH_SHORT).show();//弹出对话框
}
}