ListView是比较常用的控件,但一直都觉得创建ListView步骤有点繁琐,故在此总结一下,方便查阅。

程序效果是实现一个ListView,ListView里面有标题,内容和图片,并加入点击和长按响应。

 

 

 

 

首先在xml里面定义一个ListView

 

Xml代码
 1 <?xmlversion="1.0"encoding="utf-8"?>
 2 <LinearLayout
 3 android:id="@+id/LinearLayout01"
 4 android:layout_width="fill_parent"
 5 android:layout_height="fill_parent"
 6 xmlns:android="http://schemas.android.com/apk/res/android">
 7 <ListViewandroid:layout_width="wrap_content"
 8 android:layout_height="wrap_content"
 9 android:id="@+id/ListView01"
10 />
11 </LinearLayout>

 

定义ListView每个条目的Layout,用RelativeLayout实现:

 

Xml代码
 1 <?xml version="1.0" encoding="utf-8"?>
 2 <RelativeLayout 
 3     android:id="@+id/RelativeLayout01" 
 4     android:layout_width="fill_parent" 
 5     xmlns:android="http://schemas.android.com/apk/res/android" 
 6     android:layout_height="wrap_content" 
 7     android:paddingBottom="4dip" 
 8     android:paddingLeft="12dip"
 9     android:paddingRight="12dip">
10 <ImageView 
11     android:paddingTop="12dip"
12     android:layout_alignParentRight="true"
13     android:layout_width="wrap_content" 
14     android:layout_height="wrap_content" 
15     android:id="@+id/ItemImage"
16     /> 
17 <TextView 
18     android:text="TextView01" 
19     android:layout_height="wrap_content" 
20     android:textSize="20dip" 
21     android:layout_width="fill_parent" 
22     android:id="@+id/ItemTitle"
23     />
24 <TextView 
25     android:text="TextView02" 
26     android:layout_height="wrap_content" 
27     android:layout_width="fill_parent" 
28     android:layout_below="@+id/ItemTitle" 
29     android:id="@+id/ItemText"
30     />
31 </RelativeLayout>

 

最后在Activity里面调用和加入Listener,具体见注释:

 

Java代码
 1 package com.ray.test; 
 2 
 3 import java.util.ArrayList; 
 4 import java.util.HashMap; 
 5 
 6 import android.app.Activity; 
 7 import android.os.Bundle; 
 8 import android.view.ContextMenu; 
 9 import android.view.MenuItem; 
10 import android.view.View; 
11 import android.view.ContextMenu.ContextMenuInfo; 
12 import android.view.View.OnCreateContextMenuListener; 
13 import android.widget.AdapterView; 
14 import android.widget.ListView; 
15 import android.widget.SimpleAdapter; 
16 import android.widget.AdapterView.OnItemClickListener; 
17 
18 publicclass TestListView extends Activity { 
19 @Override
20 publicvoid onCreate(Bundle savedInstanceState) { 
21 super.onCreate(savedInstanceState); 
22 setContentView(R.layout.main); 
23 //绑定Layout里面的ListView 
24 ListView list = (ListView) findViewById(R.id.ListView01); 
25 
26 //生成动态数组,加入数据 
27 ArrayList<HashMap<String, Object>> listItem = new ArrayList<HashMap<String, Object>>(); 
28 for(int i=0;i<10;i++) 
29 { 
30 HashMap<String, Object> map = new HashMap<String, Object>(); 
31 map.put("ItemImage", R.drawable.checked);//图像资源的ID 
32 map.put("ItemTitle", "Level "+i); 
33 map.put("ItemText", "Finished in 1 Min 54 Secs, 70 Moves! "); 
34 listItem.add(map); 
35 } 
36 //生成适配器的Item和动态数组对应的元素 
37 SimpleAdapter listItemAdapter = new SimpleAdapter(this,listItem,//数据源 
38 R.layout.list_items,//ListItem的XML实现 
39 //动态数组与ImageItem对应的子项 
40 new String[] {"ItemImage","ItemTitle", "ItemText"}, 
41 //ImageItem的XML文件里面的一个ImageView,两个TextView ID 
42 newint[] {R.id.ItemImage,R.id.ItemTitle,R.id.ItemText} 
43 ); 
44 
45 //添加并且显示 
46 list.setAdapter(listItemAdapter); 
47 
48 //添加点击 
49 list.setOnItemClickListener(new OnItemClickListener() { 
50 
51 @Override
52 publicvoid onItemClick(AdapterView<?> arg0, View arg1, int arg2, 
53 long arg3) { 
54 setTitle("点击第"+arg2+"个项目"); 
55 } 
56 }); 
57 
58 //添加长按点击 
59 list.setOnCreateContextMenuListener(new OnCreateContextMenuListener() { 
60 
61 @Override
62 publicvoid onCreateContextMenu(ContextMenu menu, View v,ContextMenuInfo menuInfo) { 
63 menu.setHeaderTitle("长按菜单-ContextMenu"); 
64 menu.add(0, 0, 0, "弹出长按菜单0"); 
65 menu.add(0, 1, 0, "弹出长按菜单1"); 
66 } 
67 }); 
68 } 
69 
70 //长按菜单响应函数 
71 @Override
72 publicboolean onContextItemSelected(MenuItem item) { 
73 setTitle("点击了长按菜单里面的第"+item.getItemId()+"个项目"); 
74 returnsuper.onContextItemSelected(item); 
75 } 
76 } 

 

posted on 2012-10-02 22:25  承志软件.张  阅读(118)  评论(0)    收藏  举报