Android培训三十二讲第十一讲

本文介绍如何使用自定义布局和BaseAdapter来改变Android ListView中的项颜色,并实现点击高亮效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

   Anroid是一种以嵌入式为基础的开放源码操作系统,Android培训第十一讲:系统讲解ListView 

4.自定义布局BaseAdapter修改列表颜色
     因为通过直接 构造系统的布局来绘制列表方法肯定是有限的,所以我们需要重写绘制方法 ,写一个类去继承BaseAdapter 并实现这个类中的方法,listView在一开始绘制的时候首先会调用getCout()方法得到绘制次数 ,然后会实例化自己定义的BaseAdapter通过getView()方法一层一层绘制ListView,所以我们可以在这里面根据position(当前绘制的ID)来任意的修改绘制的内容,做出好看漂亮的ListView,下面这个例子我通过重写getView修改每个列表的颜色 并且实现用户选中后成高亮状态。

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

13 

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

15         android:layout_width="fill_parent" android:layout_height="wrap_content">

16         <ImageView android:id="@+id/color_image"

17                 android:layout_width="wrap_content" android:layout_height="fill_parent"

18                 android:layout_alignParentTop="true" android:layout_alignParentBottom="true"

19                 android:adjustViewBounds="true"

20                 android:padding="2dip" />

21         <TextView android:id="@+id/color_title"

22                 android:layout_width="fill_parent" android:layout_height="wrap_content"

23                 android:layout_toRightOf="@+id/color_image"

24                 android:layout_alignParentBottom="true"

25                 android:layout_alignParentRight="true" android:singleLine="true"

26                 android:ellipsize="marquee"

27                 android:textSize="15dip"  />

28         <TextView android:id="@+id/color_text"

29                 android:layout_width="fill_parent" android:layout_height="wrap_content"

30                 android:layout_toRightOf="@+id/color_image"

31                 android:layout_below="@+id/color_title"

32                 android:layout_alignParentBottom="true"

33                 android:layout_alignParentRight="true"

34                 android:singleLine="true"

35                 android:ellipsize="marquee"

36                 android:textSize="20dip" />

37 </RelativeLayout>

38 

39 public class ColorList extends ListActivity {

40     private String[] mListTitle = { "姓名", "性别", "年龄", "居住地","邮箱"};

41     private String[] mListStr = { "亚嵌教育", "", "25", "北京",

42             "akaedu005@hotmail.com " };

43     ListView mListView = null;

44     MyListAdapter myAdapter = null;

45     @Override

46     protected void onCreate(Bundle savedInstanceState) {

47         mListView = getListView();

48         myAdapter = new MyListAdapter(this);

49         setListAdapter(myAdapter);

50         mListView.setOnItemClickListener(new OnItemClickListener() {

51             @Override

52             public void onItemClick(AdapterView<?> adapterView, View view, int position,

53                     long id) {

54                 View v=adapterView.getChildAt(position);

55                 v.setBackgroundColor(Color.RED);

56                 Toast.makeText(ColorList.this,"您选择了" + mListStr[position], Toast.LENGTH_LONG).show();

57             }

58         });

59        

60         super.onCreate(savedInstanceState);

61     }

62 

63     class MyListAdapter extends BaseAdapter {

64         private int[] colors = new int[] { 0xff626569, 0xff4f5257 };

65         public MyListAdapter(Context context) {

66             mContext = context;

67         }

68 

69         public int getCount() {

70             return mListStr.length;

71         }

72 

73         @Override

74         public boolean areAllItemsEnabled() {

75             return false;

76         }

77 

78         public Object getItem(int position) {

79             return position;

80         }

81 

82         public long getItemId(int position) {

83             return position;

84         }

85 

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

87             ImageView iamge = null;

88             TextView title = null;

89             TextView text = null;

90             if (convertView == null) {

91                 convertView = LayoutInflater.from(mContext).inflate(R.layout.colorlist, null);

92                 iamge = (ImageView) convertView.findViewById(R.id.color_image);

93                 title =(TextView) convertView.findViewById(R.id.color_title);

94                 text= (TextView) convertView.findViewById(R.id.color_text);

95             }

96             int colorPos = position % colors.length;

97             convertView.setBackgroundColor(colors[colorPos]);

98             title.setText(mListTitle[position]);

99             text.setText(mListStr[position]);

100              iamge.setImageResource(R.drawable.jay);

101             return convertView;

102         }

103 

104         private Context mContext;

105     }

106 }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值