[Android学习笔记2]ListView

列表(List)视图可以将某种控件按照列表的形式组织起来。

ListActivity 扩展了Activity可以方便 ListView的使用。

ListActivity 类实际上集成了Activity和ListView 的功能,其内部包含了一个ListView ,使用这个类可以直接构造界面中的列表视图。

ListView的数据源可以是ArrayAdapter、SimpleAdapter、SimpleCursorAdapter

我们直接看使用SimpleAdapter的例子:

activity_main.xml:

<LinearLayout 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"
	android:orientation="vertical" >"

	<ListView 
        android:id="@id/android:list"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        />
	    
	<TextView
		android:id="@id/android:empty"
		android:layout_width="wrap_content"
		android:layout_height="wrap_content"
		android:text="sorry, no display"
		/>
	
</LinearLayout>

一个LinearLayout布局中含有一个ListView,默认ID为android:list;

ID为android:empty的TextView的意思为若ListView中无数据的话,则显示该TextView(sorry, no display);

simplelayout.xml:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    >
    <TextView 
        android:id="@+id/tv_name"
        android:layout_width="wrap_content"
    	android:layout_height="wrap_content"
        />
    
    <TextView 
        android:id="@+id/tv_profession"
        android:layout_width="wrap_content"
    	android:layout_height="wrap_content"
    	android:layout_toRightOf="@id/tv_name"
    	android:paddingLeft="20dp"
        />

</RelativeLayout>

MainActivity.java

package com.example.listview;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;

import android.app.ListActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.widget.ListView;
import android.widget.SimpleAdapter;

public class MainActivity extends ListActivity {      //继承ListActivity类
	
	ArrayList<Map<String, Object>> data;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		
		
		PrepareData();
		//R.layout.simplelayout 为ListView一列的布局,在这里为RelativeLayout相对布局
		//R.id.tv_name         第一个TextView的ID
		//R.id.tv_profession   第二个TextView的ID
		//data为ArrayList结构,其中的成员为Map数据类型
		//String[]为Map中索引值的key
		SimpleAdapter adapter = new SimpleAdapter(this, data, R.layout.simplelayout, 
				new String[]{"姓名","职业"}, new int[]{R.id.tv_name, R.id.tv_profession});
		
		setListAdapter(adapter);

		setContentView(R.layout.activity_main);
	}
	
	//重写onListItemClick方法,实现列表按键事件响应
	@Override
	protected void onListItemClick(ListView l, View v, int position, long id) {
		// TODO Auto-generated method stub
		super.onListItemClick(l, v, position, id);
		//显示到面板的标题栏中
		setTitle(l.getItemAtPosition(position).toString());	
	}

	private void PrepareData()
	{
		data = new ArrayList<Map<String, Object>>();
		Map<String, Object> item ;
		item = new HashMap<String, Object>();
		item.put("姓名", "张三");
		item.put("职业","码农");
		data.add(item);
		
		item = new HashMap<String, Object>();
		item.put("姓名", "李四");
		item.put("职业","产品经理");
		data.add(item);
		
		item = new HashMap<String, Object>();
		item.put("姓名", "王五");
		item.put("职业","销售");
		data.add(item);
	}
	
	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}
}


 

运行效果:


点击中间一列后,标题栏的变化:

[Android学习笔记2]ListView_第1张图片
 

你可能感兴趣的:([Android学习笔记2]ListView)