zoukankan      html  css  js  c++  java
  • 自定义ListView adapter适配器

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

    listview加载adapter过程是这样的.

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

    main.xml

    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

    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

    Java代码  收藏代码
    1. public class People {  
    2.     public String name;  
    3.     public String sex;  
    4.     public String age;  
    5. }  

    定义适配器 MyAdapter.java

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

    主类

    Java代码  收藏代码
    1. package com.action;  
    2.   
    3. import android.app.Activity;  
    4. import android.os.Bundle;  
    5. import android.widget.ListView;  
    6.   
    7. public class Tab extends Activity {  
    8.     MyAdapter adapter ;  
    9.     /** Called when the activity is first created. */  
    10.     @Override  
    11.     public void onCreate(Bundle savedInstanceState) {  
    12.         super.onCreate(savedInstanceState);  
    13.         setContentView(R.layout.main);  
    14.         System.out.println("*********Tab");  
    15.         ListView listView =(ListView) findViewById(R.id.list);  
    16.         adapter = new MyAdapter(this);  
    17.         setPeople();  
    18.         listView.setAdapter(adapter);  
    19.     }  
    20.     public void setPeople(){  
    21.         People people;  
    22.         for(int i=1;i<5;i++){  
    23.             people = new People();  
    24.             people.name="张三";  
    25.             people.sex = "男";  
    26.             people.age ="22";  
    27.             adapter.addList(people);  
    28.         }  
    29.     }  
    30. }  
  • 相关阅读:
    【转载】JavaScript变量: 变量命名原则
    【转载】mysql运行报【The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized or represents more than one time zone...】的解决方法
    Java Web 环境搭建
    原生JS消息提示插件Message.js
    SQL Server 参数嗅探问题
    根据表名和列名获取关联index的创建脚本
    mongodb快速均衡导入数据
    index optimize
    PG Foreign key 外键
    无密码登陆
  • 原文地址:https://www.cnblogs.com/x_wukong/p/4342137.html
Copyright © 2011-2022 走看看