ListView自定义相关

本文详细介绍了如何在Android中自定义AdapterView,包括如何创建自定义类,填充方法,以及如何根据数据生成不同的View。通过实例演示了如何使用自定义的数据展示方式,使界面更加美观。

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

http://ycl248.blog.163.com/blog/static/3634280620105410114647/




[功能]
* AdapterView
- ListView
- GridView
- Gallery
- Spinner

* Adapter
- SimpleAdapter
- SimpleCursorAdapter
- ArrayAdapter

至于 AdapterView & Adapter 如何选择的问题 有2点需要注意:
× AdapterView  的选择 只和界面有关 和具体数据无关
× Adapter 的选择 只喝数据有关 和界面无关
二者耦合度高 互不干涉!

android给出的AdapterView中所使用的Adapter的item都是TextView 即 只能显示一下文字信息 这就限制了它的应用 所以现在告诉大家怎么使用别的View


[思路]
1. 自定义一个 extends BaseAdapter 的 class 如 public class CustomList extends BaseAdapter
2. 填充 CustomList 的一些方法 如下:

Java代码 

1 public int getCount()   

2 public Object getItem(int position)   

3 public long getItemId(int position)   

4 public View getView(int position, View convertView, ViewGroup parent)  



[代码]
1. 比如 现在有下列数据 要求显示之

Java代码 

String[] week = {   

    "JAN","FEB","MAR","APR",   

            "MAY","JUN","JUL","AUG","SEP","OCT","NOV","DEC "  

    };  



2. 一些函数的定义如下

Java代码 

9 public class CustomList extends BaseAdapter {   

10         Activity activity;   

11            

12         //construct  

13         public CustomList(Activity a ) {   

14             activity = a;   

15         }   

16            

17         @Override  

18         public int getCount() {   

19             // TODO Auto-generated method stub  

20             return week.length;   

21         }   

22   

23         @Override  

24         public Object getItem(int position) {   

25             // TODO Auto-generated method stub  

26             return week[position];   

27         }   

28   

29         @Override  

30         public long getItemId(int position) {   

31             // TODO Auto-generated method stub  

32             return position;   

33         }   

34   

35         @Override  

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

37             // TODO Auto-generated method stub  

38             TextView tv = new TextView(activity);   

39             tv.setText(week[position]);   

40             return tv;   

41         }   

42            

43     }  

3. 考虑到美观 我们可以把getView()的一些填充提取出来 即 根据目标的position 得到目标所需View

Java代码 

44 public View addCustomView(int position){   

45             View view = new View(activity);   

46                

47             switch(position){   

48             case 11:   

49                 Button btn = new Button(activity);   

50                 btn.setText("Yes!");   

51                    

52                 view = btn;   

53             case 12:   

54                 ImageView iv = new ImageView(activity);   

55                 iv.setImageResource(R.drawable.robot);   

56                    

57                 view = iv;   

58                    

59                 break;   

60             default:   

61                 TextView tv = new TextView(activity);   

62                 tv.setGravity(1);   

63                 tv.setText(week[position]);   

64                 tv.setPadding(5, 5, 5, 5);   

65                 view = tv;   

66             }   

67                

68             return view;   

69         }  



4. 如何使用

Java代码 

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

71             // TODO Auto-generated method stub  

72             return addCustomView(position);   

73         }  


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值