转自:http://hilary3113.iteye.com/blog/998352

listview加载adapter过程是这样的.

1 先判断adapter 有多少数据项,根据这个数据确定有多少item. 
2 确定每个item里加载哪个View. 
3 把View里加载要显示的数据.

main.xml

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:orientation="vertical" android:layout_width="fill_parent"
  4. android:layout_height="fill_parent">
  5. <TextView android:layout_width="wrap_content"
  6. android:layout_height="wrap_content" android:text="123424312423142134" />
  7. <ListView android:id="@+id/list" android:layout_width="fill_parent"
  8. android:layout_height="wrap_content" />
  9. </LinearLayout>

listView布局文件:item.xml

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:orientation="horizontal" android:layout_width="fill_parent"
  4. android:layout_height="fill_parent">
  5. <TextView android:id="@+id/name" android:layout_width="wrap_content"
  6. android:layout_height="wrap_content" />
  7. <TextView android:id="@+id/sex" android:layout_width="wrap_content"
  8. android:layout_height="wrap_content" />
  9. <TextView android:id="@+id/age" android:layout_width="wrap_content"
  10. android:layout_height="wrap_content" />
  11. </LinearLayout>

定义一个类,用来传值 People.java

  1. public class People {
  2. public String name;
  3. public String sex;
  4. public String age;
  5. }

定义适配器 MyAdapter.java

  1. package com.action;
  2. import java.util.ArrayList;
  3. import java.util.List;
  4. import android.content.Context;
  5. import android.view.LayoutInflater;
  6. import android.view.View;
  7. import android.view.ViewGroup;
  8. import android.widget.BaseAdapter;
  9. import android.widget.TextView;
  10. /**
  11. *@Author: hilary
  12. *@Date: 2011-4-11
  13. **/
  14. public class MyAdapter extends BaseAdapter {
  15. private List<People> list = new ArrayList<People>();
  16. //  private People people = new People();
  17. private Context context;
  18. public MyAdapter(Context context){
  19. this.context = context;
  20. }
  21. //适配器根据getCount()函数来确定要加载多少项
  22. @Override
  23. public int getCount() {
  24. return list.size();
  25. }
  26. @Override
  27. public Object getItem(int paramInt) {
  28. return list.get(paramInt);
  29. }
  30. @Override
  31. public long getItemId(int paramInt) {
  32. return paramInt;
  33. }
  34. /*
  35. * 当列表里的每一项显示到界面时,都会调用这个方法一次,并返回一个view 所以方法里面尽量要简单,不要做没必要的动作(non-Javadoc)
  36. * 我这里为了大家好理解,没有做优化
  37. */
  38. @Override
  39. public View getView(int paramInt, View paramView, ViewGroup paramViewGroup) {
  40. //得到列表样式的view对象
  41. paramView=LayoutInflater.from(context).inflate(R.layout.item, null);
  42. //通过view来得到Item中的每个控件的操作权
  43. TextView name = (TextView)paramView.findViewById(R.id.name);
  44. TextView sex = (TextView)paramView.findViewById(R.id.sex);
  45. TextView age = (TextView)paramView.findViewById(R.id.age);
  46. //获得list里面的第paramInt个对象,并把值赋给每个控件
  47. People people = list.get(paramInt);
  48. name.setText(people.name);
  49. sex.setText(people.sex);
  50. age.setText(people.age);
  51. //把一项返回,加载这个View
  52. return paramView;
  53. }
  54. public void addList(People people){
  55. list.add(people);
  56. }
  57. }

主类

  1. package com.action;
  2. import android.app.Activity;
  3. import android.os.Bundle;
  4. import android.widget.ListView;
  5. public class Tab extends Activity {
  6. MyAdapter adapter ;
  7. /** Called when the activity is first created. */
  8. @Override
  9. public void onCreate(Bundle savedInstanceState) {
  10. super.onCreate(savedInstanceState);
  11. setContentView(R.layout.main);
  12. System.out.println("*********Tab");
  13. ListView listView =(ListView) findViewById(R.id.list);
  14. adapter = new MyAdapter(this);
  15. setPeople();
  16. listView.setAdapter(adapter);
  17. }
  18. public void setPeople(){
  19. People people;
  20. for(int i=1;i<5;i++){
  21. people = new People();
  22. people.name="张三";
  23. people.sex = "男";
  24. people.age ="22";
  25. adapter.addList(people);
  26. }
  27. }
  28. }

自定义ListView adapter适配器的更多相关文章

  1. 自定义ListView适配器Adapter引用布局文件的情况下实现点击列表项时背景颜色为灰色

    listview控件设置适配器的时候,如果使用自定义的adapter,比如MyArrayAdapter extends ArrayAdapter<String> 如果listitem布局文 ...

  2. 无废话Android之listview入门,自定义的数据适配器、采用layoutInflater打气筒创建一个view对象、常用数据适配器ArrayAdapter、SimpleAdapter、使用ContentProvider(内容提供者)共享数据、短信的备份、插入一条记录到系统短信应用(3)

    1.listview入门,自定义的数据适配器 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/and ...

  3. Android中ListView 控件与 Adapter 适配器如何使用?

    一个android应用的成功与否,其界面设计至关重要.为了更好的进行android ui设计,我们常常需要借助一些控件和适配器.今天小编在android培训网站上搜罗了一些有关ListView 控件与 ...

  4. android之ListView,详细介绍实现步骤,举例,自定义listview适配器

    android之ListView,详细介绍实现步骤,举例,自定义listview适配器 本文来源于www.ifyao.com禁止转载!www.ifyao.com android中如何使用listVie ...

  5. android listview使用自定义的adapter没有了OnItemClickListener事件解决办法

    在使用listview的时用使用自定义的adapter的时候,如果你的item布局中包含有Button,Checkable继承来的所有控件,那么你将无法获取listview的onItemClickLi ...

  6. 自定义ListView适配器

    继承BaseAdapter类 覆盖以下4个方法: @Override public int getCount() { return users.size(); } @Override public O ...

  7. Android adapter适配器的学习

    学习Android有一点时间,说说自己的学习感悟. 首先呢,先说说适配器的作用,顾名思义,它就是把数据定义好一定的规则,使得我们可以用到ListView GridView等上面 所以说这玩意,还是得好 ...

  8. Android 自定义ListView

    本文讲实现一个自定义列表的Android程序,程序将实现一个使用自定义的适配器(Adapter)绑定 数据,通过contextView.setTag绑定数据有按钮的ListView. 系统显示列表(L ...

  9. Android之listview && adapter

    今天我们讲的也是非常重要的一个控件listview-最常用也是最难的 一个ListView通常有两个职责. (1)将数据填充到布局. (2)处理用户的选择点击等操作. 第一点很好理解,ListView ...

随机推荐

  1. socket-----爬虫&&文件传输

    最近想着写几个小demo 写了一个爬虫,用的是C++,基本思想就是一层一层的找类似深搜吧,抓取的页面是www.cnblogs.com,从localhost发送request请求,给www.cnblog ...

  2. (转)OpenCV 访问Mat中每个像素的值

    转自:http://blog.csdn.net/xiaowei_cqu/article/details/19839019 在<OpenCV 2 Computer Vision Applicati ...

  3. 【hdoj_2100】Lovekey(大数+字符处理)

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=2100 根据题目意思,现将字符串转化为10进制,再采用10进制加法相加,再转化为26进制. 另一种直接的思路 ...

  4. thinkphp5.1使用phpstudy隐藏index.php

    apache的重写规则如下: <IfModule mod_rewrite.c> Options +FollowSymlinks -Multiviews RewriteEngine on R ...

  5. Python全栈开发之10、网络编程

    网络编程就是如何在程序中实现两台计算机的通信,而两台计算机间的通信其实就是两个进程间的通信,进程间的通信主要通过socket(套接字)来描述ip地址(主机)和端口(进程)来实现的,因此我们学习网络编程 ...

  6. poj1011 Sticks(DFS+剪枝)

    题目链接 http://poj.org/problem?id=1011 题意 输入n根棍子的长度,将这n根棍子组合成若干根长度相同的棍子,求组合后的棍子的最小长度.这题是poj2362的加强版,思路与 ...

  7. EOJ 3261 分词

    字典树,$dp$. 记录$dp[i]$为以$i$为结尾获得的最大价值.枚举结尾一段是哪个单词,更新最大值.可以将字典中单词倒着建一棵字典树. 这题数据有点不严谨. 下面这组数据答案应该是负的. 3 a ...

  8. 洛谷P2731 骑马修栅栏 [欧拉回路]

    题目传送门 骑马修栅栏 题目背景 Farmer John每年有很多栅栏要修理.他总是骑着马穿过每一个栅栏并修复它破损的地方. 题目描述 John是一个与其他农民一样懒的人.他讨厌骑马,因此从来不两次经 ...

  9. disconf-client-for-java

    一.disconf客户端部署 disconf目前仅支持java客户端,下文针对java客户端安装作为整理,记录下安装部署的步骤 1.环境依赖 首先需要安装java环境及maven环境,不再过多介绍 2 ...

  10. vue实现对数据的增删改查(CURD)

    vue实现对数据的增删改查(CURD) 导语: 网上看到一个写的比较好的学习文章,转载分享一下 在管理员的一些后台页面里,个人中心里的数据列表里,都会有对这些数据进行增删改查的操作.比如在管理员后台的 ...