首先得了解Adapter层级关系:

示例,将user对象适配到textview

  1. public class User {
  2.  
  3. private String userName;
  4. private String userAddress;
  5.  
  6. public User(String name, String address) {
  7. // TODO Auto-generated constructor stub
  8.  
  9. userAddress = address;
  10. userName = name;
  11. }
  12.  
  13. public String getUserName() {
  14. return userName;
  15. }
  16.  
  17. public void setUserName(String userName) {
  18. this.userName = userName;
  19. }
  20.  
  21. public String getUserAddress() {
  22. return userAddress;
  23. }
  24.  
  25. public void setUserAddress(String userAddress) {
  26. this.userAddress = userAddress;
  27. }
  28.  
  29. }

为user对象定制UserAdapter,并实现BaseAdapter抽象方法

  1. public class UserAdapter extends BaseAdapter {
  2.  
  3. List<User> mUsers;
  4.  
  5. Context mContext;
  6.  
  7. public UserAdapter(Context context, List<User> users) {
  8.  
  9. mContext = context;
  10. mUsers = users;
  11. }
  12.  
  13. @Override
  14. public int getCount() {
  15. // TODO Auto-generated method stub
  16. return mUsers.size();
  17. }
  18.  
  19. @Override
  20. public Object getItem(int position) {
  21. // TODO Auto-generated method stub
  22. return mUsers.get(position);
  23. }
  24.  
  25. @Override
  26. public long getItemId(int position) {
  27. // TODO Auto-generated method stub
  28. return position;
  29. }
  30.  
  31. @Override
  32. public View getView(int position, View convertView, ViewGroup parent) {
  33. // TODO Auto-generated method stub
  34.  
  35. convertView = LayoutInflater.from(mContext).inflate(R.layout.user_item, null);
  36. TextView textView1 = (TextView) convertView.findViewById(R.id.textView1);
  37. TextView textView2 = (TextView) convertView.findViewById(R.id.textView2);
  38. textView1.setText(mUsers.get(position).getUserName());
  39. textView2.setText(mUsers.get(position).getUserAddress());
  40.  
  41. return convertView;
  42. }
  43.  
  44. }

在主activity里调用适配器,注意,onClickListener对Spinner不适用,调用会报错

  1. protected void onCreate(Bundle savedInstanceState) {
  2. super.onCreate(savedInstanceState);
  3. setContentView(R.layout.activity_form);
  4.  
  5. // showSpinner();
  6. showUserSpinner();
  7. }
  8.  
  9. public void showUserSpinner() {
  10. Spinner spinner = (Spinner) findViewById(R.id.spinner3);
  11. ArrayList<User> users = new ArrayList<User>();
  12. users.add(new User("Jewelinsie", "重庆"));
  13. users.add(new User("Chung Shurecy", "内江"));
  14.  
  15. UserAdapter userAdapter = new UserAdapter(this, users);
  16. 16 spinner.setAdapter(userAdapter);
  17.  
  18. spinner.setOnItemSelectedListener(new OnItemSelectedListener() {
  19.  
  20. @Override
  21. public void onItemSelected(AdapterView<?> parent, View view,
  22. int position, long id) {
  23. // TODO Auto-generated method stub
  24. TextView textView2 = (TextView)view.findViewById(R.id.textView2);
  25. Log.i(TAG, "address is "+textView2.getText().toString());
  26. }
  27.  
  28. @Override
  29. public void onNothingSelected(AdapterView<?> parent) {
  30. // TODO Auto-generated method stub
  31.  
  32. }
  33. });
  34.  
  35. }

Layout配置如下:

  1. <TextView
  2. android:id="@+id/textView1"
  3. android:layout_width="wrap_content"
  4. android:layout_height="wrap_content"
  5. android:layout_margin="10dp"
  6. android:drawableLeft="@drawable/p16"
  7. />
  8.  
  9. <TextView
  10. android:id="@+id/textView2"
  11. android:layout_width="wrap_content"
  12. android:layout_height="wrap_content"
  13. android:layout_margin="10dp"
  14. />

实现效果,样式图片虽然丑了点,但是在功能上是成功的。

初识Adapter的更多相关文章

  1. Android零基础入门第38节:初识Adapter

    原文:Android零基础入门第38节:初识Adapter 在上一节一起了解了ListView的简单使用,那么本节继续来学习与ListView有着千丝万缕的Adapter. 一.了解MVC模式 在开始 ...

  2. Android零基础入门第58节:数值选择器NumberPicker

    原文:Android零基础入门第58节:数值选择器NumberPicker 上一期学习了日期选择器DatePicker和时间选择器TimePicker,是不是感觉非常简单,本期继续来学习数值选择器Nu ...

  3. Android零基础入门第59节:AnalogClock、DigitalClock和TextClock时钟组件

    原文:Android零基础入门第59节:AnalogClock.DigitalClock和TextClock时钟组件 在前面一期,我们学习了DatePicker和TimePicker,在实际开发中其不 ...

  4. Android零基础入门第57节:日期选择器DatePicker和时间选择器TimePicker

    原文:Android零基础入门第57节:日期选择器DatePicker和时间选择器TimePicker 在实际开发中,经常会遇见一些时间选择器.日期选择器.数字选择器等需求,那么从本期开始来学习And ...

  5. Android零基础入门第56节:翻转视图ViewFlipper打造引导页和轮播图

    原文:Android零基础入门第56节:翻转视图ViewFlipper打造引导页和轮播图 前面两期学习了 ViewAnimator及其子类ViewSwitcher的使用,以及ViewSwitcher的 ...

  6. Android零基础入门第55节:ImageSwitcher和TextSwitcher使用

    原文:Android零基础入门第55节:ImageSwitcher和TextSwitcher使用 上一期我们了解了ViewAnimator组件和ViewSwitcher组件的使用,你都掌握了吗?本期一 ...

  7. Android零基础入门第54节:视图切换组件ViewSwitcher

    原文:Android零基础入门第54节:视图切换组件ViewSwitcher 前面三期学习了ProgressBar系列组件,那本期开始一起来学习ViewAnimator组件. 一.ViewAnimat ...

  8. Android零基础入门第53节:拖动条SeekBar和星级评分条RatingBar

    原文:Android零基础入门第53节:拖动条SeekBar和星级评分条RatingBar 前面两期都在学习ProgressBar的使用,关于自定义ProgressBar的内容后期会继续学习的,本期先 ...

  9. Android零基础入门第52节:自定义酷炫进度条

    原文:Android零基础入门第52节:自定义酷炫进度条 Android系统默认的ProgressBar往往都不能满足实际开发需要,一般都会开发者自定义ProgressBar. 在Android开发中 ...

随机推荐

  1. cocos2dx 3.0 用ClippingNode做游戏的新手引导

    转自:http://blog.csdn.net/star530/article/details/20851263 本篇介绍的是用ClippingNode 做游戏的新手引导,额,或者说是做新手引导的一种 ...

  2. Struts2返回JSON数据的具体应用范…

    Struts2返回JSON数据的具体应用范例 博客分类: Struts2 Struts2JSON  早在我刚学Struts2之初的时候,就想写一篇文章来阐述Struts2如何返回JSON数据的原理和具 ...

  3. 5、scala面向对象-类

    一.类 1.定义类 ##定义并调用 scala> :paste // Entering paste mode (ctrl-D to finish) class HelloWord { priva ...

  4. SQL中的drop,truncate和delete的区别

    (1)   DELETE语句执行删除的过程是每次从表中删除一行,并且同时将该行的删除操作作为事务记录在日志中保存以便进行进行回滚操作.TRUNCATE TABLE 则一次性地从表中删除所有的数据并不把 ...

  5. ZOJ 3512 Financial Fraud (左偏树)

    题意:给定一个序列,求另一个不递减序列,使得Abs(bi - ai) 和最小. 析:首先是在每个相同的区间中,中位数是最优的,然后由于要合并,和维护中位数,所以我们选用左偏树来维护,当然也可以用划分树 ...

  6. EntityFramework数据库配置(code frist)

    什么也不说先贴代码 <?xml version="1.0" encoding="utf-8"?> <configuration> < ...

  7. Git 分支管理 Feature分支 强行删除分支

    软件开发中,总有无穷无尽的新的功能要不断添加进来. 添加一个新功能时,你肯定不希望因为一些实验性质的代码,把主分支搞乱了, 所以,每添加一个新功能,最好新建一个feature分支, 在上面开发,完成后 ...

  8. js 正则表达式学习笔记

    正则表达式正则表达式是由一个字符序列形成的搜索模型 语法new RegExp("[abc]")/[abc]//正则表达式主体/修饰符(可选) 1.修饰符i 忽略大小写g 执行全局匹 ...

  9. 洛谷P3327 [SDOI2015]约数个数和(莫比乌斯反演)

    传送门 公式太长了……我就直接抄一下这位大佬好了……实在懒得打了 首先据说$d(ij)$有个性质$$d(ij)=\sum_{x|i}\sum_{y|j}[gcd(x,y)=1]$$ 我们所求的答案为$ ...

  10. PV、UV、VV、IP是什么意思?

    PV.UV.VV.IP作为网站分析中最常见的基础指标,能够从宏观概括性地衡量网站的整体运营状况,也是检测网站运营是否正常的最直观的指标. 1.VV(来访次数/访问次数):VisitView 记录所有访 ...