android制作窗口组件,android用户界面-组件Widget-列表视图ListView

ListView是比较常用的控件

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

列表的显示需要三个元素:

1.ListVeiw 用来展示列表的View。

2.适配器 用来把数据映射到ListView上的中介。

3.数据 具体的将被映射的字符串,图片,或者基本组件。

根据列表的适配器类型,列表分为三种,ArrayAdapter,SimpleAdapter和SimpleCursorAdapter

SimpleAdapter的例子如下:

首先在xml里面定义一个ListView

1.<?xml  version="1.0"encoding="utf-8"?>

2. 

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. 

8.          android:layout_height="wrap_content"

9.          android:id="@+id/ListView01"

10.          />

11. 

android:id="@+id/LinearLayout01"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

xmlns:android="http://schemas.android.com/apk/res/android">

android:layout_height="wrap_content"

android:id="@+id/ListView01"

/>

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

1.<?xml  version="1.0"encoding="utf-8"?>

2.

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.

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.

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.

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.

android:id="@+id/RelativeLayout01"

android:layout_width="fill_parent"

xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_height="wrap_content"

android:paddingBottom="4dip"

android:paddingLeft="12dip"

android:paddingRight="12dip">

android:paddingTop="12dip"

android:layout_alignParentRight="true"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:id="@+id/ItemImage"

/>

android:text="TextView01"

android:layout_height="wrap_content"

android:textSize="20dip"

android:layout_width="fill_parent"

android:id="@+id/ItemTitle"

/>

android:text="TextView02"

android:layout_height="wrap_content"

android:layout_width="fill_parent"

android:layout_below="@+id/ItemTitle"

android:id="@+id/ItemText"

/>

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

1.packagecom.ray.test;

2.

3.importjava.util.ArrayList;

4.importjava.util.HashMap;

5.

6.importandroid.app.Activity;

7.importandroid.os.Bundle;

8.importandroid.view.ContextMenu;

9.importandroid.view.MenuItem;

10.importandroid.view.View;

11.importandroid.view.ContextMenu.ContextMenuInfo;

12.importandroid.view.View.OnCreateContextMenuListener;

13.importandroid.widget.AdapterView;

14.importandroid.widget.ListView;

15.importandroid.widget.SimpleAdapter;

16.importandroid.widget.AdapterView.OnItemClickListener;

17.

18.publicclassTestListViewextendsActivity {

19.@Override

20.publicvoidonCreate(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> listItem =newArrayList>();

28.for(inti=0;i<10;i++)

29.        {

30.            HashMap map =newHashMap();

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 =newSimpleAdapter(this,listItem,//数据源

38.            R.layout.list_items,//ListItem的XML实现

39.//动态数组与ImageItem对应的子项

40.newString[] {"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(newOnItemClickListener() {

50.

51.@Override

52.publicvoidonItemClick(AdapterView> arg0, View arg1,intarg2,

53.longarg3) {

54.                setTitle("点击第"+arg2+"个项目");

55.            }

56.        });

57.

58.//添加长按点击

59.        list.setOnCreateContextMenuListener(newOnCreateContextMenuListener() {

60.

61.@Override

62.publicvoidonCreateContextMenu(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.publicbooleanonContextItemSelected(MenuItem item) {

73.        setTitle("点击了长按菜单里面的第"+item.getItemId()+"个项目");

74.returnsuper.onContextItemSelected(item);

75.    }

76.}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值