在android开发中ListView是比较常用的组件,它以列表的形式展示具体内容,并且能够根据数据的长度自适应显示。
main.xml布局文件
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="fill_parent"> <ListView android:layout_width="fill_parent" android:layout_height="wrap_content" android:id="@+id/MyListView"> </ListView></LinearLayout>
list_items.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="wrap_content" android:id="@+id/myListItem" android:paddingBottom="4dip" android:paddingLeft="12dip" android:paddingRight="12dip"> <TextView android:layout_height="wrap_content" android:layout_width="fill_parent" android:id="@+id/itemTitle" android:textSize="20dip" android:layout_weight="1"> </TextView> <TextView android:layout_height="wrap_content" android:layout_width="fill_parent" android:id="@+id/itemText"> </TextView></LinearLayout>
MyList.java类文件
package iaiai.test;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import android.app.Activity;import android.app.AlertDialog;import android.content.DialogInterface;import android.os.Bundle;import android.view.ContextMenu;import android.view.ContextMenu.ContextMenuInfo;import android.view.MenuItem;import android.view.View;import android.view.View.OnCreateContextMenuListener;import android.widget.AdapterView;import android.widget.AdapterView.AdapterContextMenuInfo;import android.widget.AdapterView.OnItemClickListener;import android.widget.ListView;import android.widget.SimpleAdapter;import android.widget.Toast;public class MyList extends Activity { private ListView list; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); list = (ListView) findViewById(R.id.MyListView); // 配置适配器 SimpleAdapter adapter = new SimpleAdapter(this, getData(),// 数据源 R.layout.list_items,// 显示布局 new String[] { "itemTitle", "itemText" }, // 数据源的属性字段 new int[] { R.id.itemTitle, R.id.itemText }); // 布局里的控件id // 添加并且显示 list.setAdapter(adapter); // 添加点击 list.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { setTitle("点击第" + arg2 + "个项目"); Toast.makeText(MyList.this, "点击第" + arg2 + "个项目", Toast.LENGTH_LONG).show(); } }); // 添加长按点击 list.setOnCreateContextMenuListener(new OnCreateContextMenuListener() { @Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { // menu.setHeaderIcon(R.drawable.icon); //字义图片样式 menu.setHeaderTitle("长按菜单选项:"); menu.add(1, 0, 0, "编辑"); menu.add(0, 1, 0, "删除"); } }); } @Override public boolean onContextItemSelected(MenuItem item) { int selectedPosition = ((AdapterContextMenuInfo) item.getMenuInfo()).position; // 刚才选择的 Map<String, String> map = (HashMap) list .getItemAtPosition(selectedPosition); // ListView中的数据 Toast.makeText(MyList.this, "你选择的:" + selectedPosition + ",内容为:" + map.get("itemTitle"), Toast.LENGTH_LONG).show(); // 显示那条数据 String temp = ""; switch (item.getItemId()) { case 0: temp = "编辑"; break; case 1: temp = "删除"; break; default: break; } // Toast.makeText(this, temp + "處理", Toast.LENGTH_LONG).show(); return super.onContextItemSelected(item); } private List<Map<String, String>> getData() { // 组织数据源 List<Map<String, String>> mylist = new ArrayList<Map<String, String>>(); for (int i = 0; i < 10; i++) { Map<String, String> map = new HashMap<String, String>(); map.put("itemTitle", "文章" + i); map.put("itemText", "Android 小项目" + i); mylist.add(map); } return mylist; } /** * listview中点击按键弹出对话框 */ public void showInfo() { new AlertDialog.Builder(this).setTitle("我的listview") .setMessage("介绍...") .setPositiveButton("确定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { } }).show(); }}
运行结果:



ListView不可放入ScrollView中,否则UI效果不可预测。切记切记