转自: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. asyncio的简单了解

    asyncio是Python 3.4版本引入的标准库,直接内置了对异步IO的支持. asyncio的编程模型就是一个消息循环.我们从asyncio模块中直接获取一个EventLoop的引用,然后把需要 ...

  2. 洛谷 P2945 [USACO09MAR]沙堡Sand Castle 题解

    题目传送门 大概思路就是把这两个数组排序.在扫描一次,判断大小,累加ans. #include<bits/stdc++.h> using namespace std; int x,y,z; ...

  3. Delphi idHttpServer接收Http Get请求解码问题

    引用 Httpapp单元,使用Httpdecode函数进行解码 procedure TFrmMain.HTTPServerCommandGet(AThread: TIdPeerThread; AReq ...

  4. Expert C Programming 阅读笔记(~CH1)

    P4: 好梗!There is one other convention—sometimes we repeat a key point to emphasize it. In addition, w ...

  5. PouchDB:JavaScript同步数据库

    简介 PouchDB是受 Apache CouchDB启发为Web设计的一款占用空间少的数据库.PouchDB项目的目标是帮助开发者构建线上和线下都能很好地使用的Web应用程序,在应用程序离线的时候, ...

  6. 《Android虚拟机》--内存分配策略

    No1: Java在内存分配时会涉及到以下区域: 寄存器:我们在程序中无法控制 栈:存放基本类型的数据和对象的引用,但对象本身不存放在栈中,而是存放在堆中 堆:存放用new产生的数据 静态域:存放在对 ...

  7. 湖南大学ACM程序设计新生杯大赛(同步赛)D - Number

    题目描述 We define Shuaishuai-Number as a number which is the sum of a prime square(平方), prime cube(立方), ...

  8. JS模拟PHP的sleep

    function sleep(n) { var start = new Date().getTime(); while(true) { if(new Date().getTime() - start ...

  9. [BZOJ4289][PA2012]TAX(最短路)

    首先考虑一种暴力做法,为每条边拆成两条有向边,各建一个点.若某两条边有公共点,则在边所对应的点之间连一条边,权值为两条边中的较大值.这样跑最短路是$O(m^2\log m)$的. 用类似网络流中补流的 ...

  10. bzoj 3573: [Hnoi2014]米特运输

    3573: [Hnoi2014]米特运输 Description 米特是D星球上一种非常神秘的物质,蕴含着巨大的能量.在以米特为主要能源的D星上,这种米特能源的运输和储存一直是一个大问题.    D星 ...