• 关于Android中适配器的使用简介


    关于适配器的解释,简单的讲就是把要显示给用户的数据信息通过适当的模式动态的填充各种ListView,也可以看作是界面数据绑定的一种理解,它所操纵的数据一般都是一些比较复杂的数据,界面是有一定规律的View。由于一些特殊的需要,往往需要自己定义适配器来完成显示功能,下面就以较为常用的适配器简介其用法:

    1、首先要定义一个用于显示ListView的布局文件main.xml,如下

     

    1. <?xml version="1.0" encoding="utf-8"?>  
    2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
    3.     android:layout_width="match_parent"  
    4.     android:layout_height="match_parent"  
    5.     android:orientation="vertical" >  
    6.   
    7.     <ListView  
    8.         android:id="@+id/person_list"  
    9.         android:layout_width="match_parent"  
    10.         android:layout_height="wrap_content"  
    11.         android:drawSelectorOnTop="false"  
    12.         android:scrollbars="vertical" />  
    13.   
    14. </LinearLayout>  


    2、再定义一个ListView中要显示的内容的布局文件item.xml,如下

     

     

    1. <?xml version="1.0" encoding="utf-8"?>  
    2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
    3.     android:layout_width="match_parent"  
    4.     android:layout_height="match_parent"  
    5.     android:orientation="horizontal" >  
    6.   
    7.     <TextView  
    8.         android:id="@+id/user_name"  
    9.         android:layout_width="wrap_content"  
    10.         android:layout_height="wrap_content"/>  
    11.   
    12.     <TextView  
    13.         android:id="@+id/user_age"  
    14.         android:layout_width="wrap_content"  
    15.         android:layout_height="wrap_content" />  
    16.   
    17. </LinearLayout>  


    3、自定义一个适配器,使数据充填到对应的View中,该适配器继承自abstract类BaseAdapter

     

     

    1. package com.ui.adapter.demo;  
    2.   
    3. import java.util.List;  
    4.   
    5. import android.content.Context;  
    6. import android.view.LayoutInflater;  
    7. import android.view.View;  
    8. import android.view.ViewGroup;  
    9. import android.widget.BaseAdapter;  
    10. import android.widget.TextView;  
    11.   
    12. public class PersonAdapter extends BaseAdapter   
    13. {  
    14.     // 上下文对象  
    15.     private Context context;  
    16.     // 要绑定的数据  
    17.     private List<Person> persons;  
    18.     // 自定义的内部类  
    19.     private ViewHolder holder;  
    20.     // 布局文件加载器  
    21.     private LayoutInflater inflater;  
    22.       
    23.     public PersonAdapter(Context context, List<Person> persons)   
    24.     {  
    25.         super();  
    26.         this.context = context;  
    27.         this.persons = persons;  
    28.     }  
    29.     /*取得绑定的数据的个数*/  
    30.     @Override  
    31.     public int getCount()   
    32.     {  
    33.         return persons.size();  
    34.     }  
    35.     /*取得指定位置的对象*/  
    36.     @Override  
    37.     public Object getItem(int position)   
    38.     {  
    39.         return persons.get(position);  
    40.     }  
    41.     /*取得绑定数据的索引*/  
    42.     @Override  
    43.     public long getItemId(int position)   
    44.     {  
    45.         return position;  
    46.     }  
    47.     /*取得指定位置的View*/  
    48.     @Override  
    49.     public View getView(int position, View convertView, ViewGroup parent)   
    50.     {  
    51.         holder = null;  
    52.         // 重生之大文豪www.dwhao.com获取加载器对象  
    53.         inflater = LayoutInflater.from(context);      
    54.           
    55.         if (null == convertView)   
    56.         {  
    57.             // 加载布局文件  
    58.             convertView = inflater.inflate(R.layout.person, null);  
    59.             holder = new ViewHolder();  
    60.             // 获取布局文件中的各控件  
    61.             holder.nameText = (TextView) convertView  
    62.                     .findViewById(R.id.user_name);  
    63.             holder.ageText = (TextView) convertView  
    64.                     .findViewById(R.id.user_age);  
    65.               
    66.             convertView.setTag(holder);  
    67.         }  
    68.         else   
    69.         {  
    70.             convertView.getTag();  
    71.         }  
    72.         // 给控件绑定数据  
    73.         holder.nameText.setText(persons.get(position).getName());  
    74.         holder.ageText.setText(persons.get(position).getAge());  
    75.           
    76.         return convertView;  
    77.     }  
    78.     /** 
    79.      * 自定义内部类,类似于缓存的作用 
    80.      */  
    81.     private class ViewHolder  
    82.     {  
    83.         TextView nameText;  
    84.           
    85.         TextView ageText;  
    86.     }  
    87. }  
  • 相关阅读:
    UVALive2287 POJ1047 HDU1313 ZOJ1073 Round and Round We Go【大数+数学计算】
    HDU1559 最大子矩阵【DP】
    51Nod-1050 循环数组最大段和【最大子段和+最小子段和+DP】
    51Nod-1051 最大子矩阵和【最大子段和+DP】
    UVALive2288 POJ1050 HDU1081 ZOJ1074 To The Max【最大子段和+DP】
    UVALive2363 POJ1005 HDU1065 ZOJ1049 I Think I Need a Houseboat【数学计算】
    UVALive6050 Primes【素数筛选+前缀和】
    POJ3978 Primes【素数筛选+前缀和】
    sql里的多行多列转一行多列小技巧
    实体类作为另一个实体类的属性
  • 原文地址:https://www.cnblogs.com/jiangye/p/3495570.html
Copyright © 2020-2023  润新知