自定义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. }  

 

posted @ 2015-03-16 16:23  明明是悟空  阅读(254)  评论(0编辑  收藏  举报