展会信息港展会大全

Android ListView分组布局改进
来源:互联网   发布日期:2015-11-27 13:14:45   浏览:1749次  

导读:由于是在网上转载的一篇文章,在这里就不多说废话了,首先看一下最终的效果图:然后是实现该ListView布局的主要代码:1、程序主界面 SeparateListView.java[ja...

由于是在网上转载的一篇文章,在这里就不多说废话了,首先看一下最终的效果图:

然后是实现该ListView布局的主要代码:

1、程序主界面 SeparateListView.java

[java]

1. package whu.iss.wuxianglong;

2.

3. import java.util.ArrayList;

4. import java.util.List;

5.

6. import android.app.Activity;

7. import android.content.Context;

8. import android.os.Bundle;

9. import android.view.LayoutInflater;

10. import android.view.View;

11. import android.view.ViewGroup;

12. import android.widget.ArrayAdapter;

13. import android.widget.ListView;

14. import android.widget.TextView;

15.

16. public class SeparateListView extends Activity {

17.ListView listView;

18.MyAdapter myAdapter;

19.public List<String> listTag = new ArrayList<String>();

20.

21./** Called when the activity is first created. */

22.@Override

23.public void onCreate(Bundle savedInstanceState) {

24.super.onCreate(savedInstanceState);

25.setContentView(R.layout.main);

26.

27.listView = (ListView) findViewById(R.id.list);

28.myAdapter = new MyAdapter(this,

29.android.R.layout.simple_expandable_list_item_1, getData());

30.listView.setAdapter(myAdapter);

31.}

32.private List<String> getData() {

33.List<String> data = new ArrayList<String>();

34.int i = 0;

35.

36.data.add("A");

37.listTag.add("A");

38.data.add("aa试数据" + (i++));

39.data.add("a试数据" + (i++));

40.data.add("aa试数据" + (i++));

41.listTag.add("B");

42.data.add("B");

43.data.add("bb试数据" + (i++));

44.data.add("b试数据" + (i++));

45.data.add("b试数据" + (i++));

46.data.add("b试数据" + (i++));

47.listTag.add("C");

48.data.add("C");

49.data.add("c测试数据" + (i++));

50.data.add("c测试数据" + (i++));

51.listTag.add("D");

52.data.add("D");

53.data.add("d测试数据" + (i++));

54.data.add("d测试数据" + (i++));

55.data.add("d测试数据" + (i++));

56.listTag.add("E");

57.data.add("E");

58.data.add("e测试数据" + (i++));

59.data.add("e测试数据" + (i++));

60.data.add("e测试数据" + (i++));

61.listTag.add("F");

62.data.add("F" );

63.data.add("f测试数据" + (i++));

64.return data;

65.}

66.

67.

68.class MyAdapter extends ArrayAdapter<String> {

69.

70.public MyAdapter(Context context,int textViewResourceId,

71.List<String> objects) {

72.super(context,textViewResourceId, objects);

73.

74.}

75.

76.@Override

77.public boolean areAllItemsEnabled() {

78.return false;

79.}

80.

81.@Override

82.public boolean isEnabled(int position) {

83.// 如果-开头,则该项不可选

84.return !listTag.contains(getItem(position));

85.}

86.

87.@Override

88.public View getView(int position, View convertView, ViewGroup parent) {

89.View view = convertView;

90.//根据标签类型加载不通的布局模板

91.if(listTag.contains(getItem(position))){

92.//如果是标签项

93.view = LayoutInflater.from(getContext()).inflate(R.layout.group_list_item_tag, null);

94.}else{

95.//否则就是数据项

96.view = LayoutInflater.from(getContext()).inflate(R.layout.group_list_item, null);

97.}

98.//显示名称

99.TextView textView = (TextView) view.findViewById(R.id.group_list_item_text);

100.textView.setText(getItem(position));

101.//返回重写的view

102.return view;

103.}

104.

105.}

106. }

2、程序主界面布局文件main.xml

[html]

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

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

3.android:orientation="vertical"

4.android:layout_width="fill_parent"

5.android:layout_height="fill_parent"

6.>

7.<ListView

8.android:id="@+id/list"

9.android:layout_width="fill_parent"

10.android:layout_height="wrap_content">

11.</ListView>

12. </LinearLayout>

3、ListView中数据部分样式布局文件group_list_item.xml

[html]

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

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

3.android:orientation="horizontal"

4.android:layout_width="fill_parent"

5.android:layout_height="wrap_content"

6.android:padding="5dip">

7.<ImageView

8.android:src="@drawable/icon"

9.android:layout_width="50px"

10.android:layout_height="50px">

11.</ImageView>

12.<TextView

13.android:id="@+id/group_list_item_text"

14.android:layout_width="wrap_content"

15.android:layout_height="fill_parent"

16.android:paddingLeft="5dip"

17.android:gravity="center_vertical">

18.</TextView>

19. </LinearLayout>

4、ListView中分组标志行的样式布局文件group_list_item_tag.xml

[html]

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

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

3.android:layout_width="fill_parent"

4.android:layout_height="wrap_content"

5.android:background="#555555"

6.android:paddingLeft="10dip">

7.<TextView

8.android:id="@+id/group_list_item_text"

9.android:layout_width="wrap_content"

10.android:layout_height="20dip"

11.android:textColor="#ffffff"

12.android:gravity="center_vertical">

13.</TextView>

14. </LinearLayout>

摘自 与时俱进

赞助本站

人工智能实验室

相关热词: android开发 教程

AiLab云推荐
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港