• 关于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. }  
  • 相关阅读:
    C#窗体操作的小技巧
    C#操作Xml
    Path类对路径字符串的操作
    Google Maps 基础
    C#时间操作总结
    根据地理坐标计算瓦片行列号
    使用VBA宏批量修改表格
    检测到在集成的托管管道模式下不适用的ASP.NET设置的解决方法
    Asp.net实现URL重写
    VS2013利用ajax访问不了json文件——VS2013配置webconfig识别json文件
  • 原文地址:https://www.cnblogs.com/jiangye/p/3495570.html
Copyright © 2020-2023  润新知