• 自定义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. }  
  • 相关阅读:
    (暂时弃坑)(半成品)ACM数论之旅18---反演定理 第二回 Mobius反演(莫比乌斯反演)((づ ̄3 ̄)づ天才第一步,雀。。。。)
    ACM数论之旅17---反演定理 第一回 二项式反演(神说要有光 于是就有了光(´・ω・`))
    ACM数论之旅16---母函数(又名生成函数)(痛并快乐着(╭ ̄3 ̄)╭)
    (暂时弃坑)ACM数论之旅15---置换群与Polya定理(我把标题看成poi了,poipoipoi(*≧▽≦)ツ)
    ACM数论之旅14---抽屉原理,鸽巢原理,球盒原理(叫法不一又有什么关系呢╮(╯▽╰)╭)
    ACM数论之旅13---容斥原理(一切都是命运石之门的选择(=゚ω゚)ノ)
    ACM数论之旅12---康托展开((*゚▽゚*)装甲展开,主推进器启动,倒计时3,2,1......)
    还有哪些东西要写눈_눈
    ACM数论之旅11---浅谈指数与对数(长篇)(今天休息,不学太难的数论> 3<)
    ACM数论之旅10---大组合数-卢卡斯定理(在下卢卡斯,你是我的Master吗?(。-`ω´-) )
  • 原文地址:https://www.cnblogs.com/x_wukong/p/4342137.html
Copyright © 2020-2023  润新知