Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 354|回复: 0

[默认分类] Android基础类之BaseAdapter

[复制链接]
  • TA的每日心情
    开心
    2021-12-13 21:45
  • 签到天数: 15 天

    [LV.4]偶尔看看III

    发表于 2018-7-6 17:12:57 | 显示全部楼层 |阅读模式

    BaseAdapter就Android应用程序中经常用到的基础数据适配器,它的主要用途是将一组数据传到像ListView、Spinner、Gallery及GridView等UI显示组件,它是继承自接口类Adapter,


    1、Adapter类简介


    1)、Adapter相关类结构如下图所示:





    自定义Adapter子类,就需要实现上面几个方法,其中最重要的是getView()方法,它是将获取数据后的View组件返回,如ListView中每一行里的TextView、Gallery中的每个ImageView。


          2)、Adapter在Android应用程序中起着非常重要的作用,应用也非常广泛,它可看作是数据源和UI组件之间的桥梁,其中Adapter、数据和UI之间的关系,可以用下图表示:





    3)、常用子类





    2、BaseAdapter简介

    BaseAdapter是实现了ListAdapter和SpinnerAdapter两个接口,当然它也可以直接给ListView和Spinner等UI组件直接提供数据。


    相关类结构如下图所示:





    3、示例


    示例一:Gallery显示一组图片


    运行结果:




    说明:上面一行图片是Gallery画廊,每次点击一个Gallery图片时,会同时在下面以大图形式显示出来该图片


    布局文件:


    1.   
    2.    <?
    3.    xml version="1.0" encoding="utf-8"
    4.    ?>
    5.    
    6.    <
    7.    LinearLayout
    8.    xmlns:android
    9.    ="http://schemas.android.com/apk/res/android"
    10.    
    11. android:orientation
    12.    ="vertical"
    13.    
    14. android:layout_width
    15.    ="fill_parent"
    16.    
    17. android:layout_height
    18.    ="fill_parent"
    19.    
    20.    >
    21.    
    22.    <
    23.    TextView
    24.    android:layout_width
    25.    ="fill_parent"
    26.    
    27. android:layout_height
    28.    ="wrap_content"
    29.    
    30. android:text
    31.    ="@string/hello"
    32.    
    33.    />
    34.    
    35.    <
    36.    Gallery
    37.    android:id
    38.    ="@+id/gallery1"
    39.    
    40. android:layout_width
    41.    ="match_parent"
    42.    
    43. android:spacing
    44.    ="5px"
    45.    
    46. android:layout_height
    47.    ="wrap_content"
    48.    
    49.    ></
    50.    Gallery
    51.    >
    52.    
    53.    <
    54.    ImageView
    55.    android:id
    56.    ="@+id/iv"
    57.    
    58. android:layout_gravity
    59.    ="center_vertical"
    60.    
    61. android:layout_marginTop
    62.    ="20px"
    63.    
    64. android:layout_width
    65.    ="320px"
    66.    
    67. android:layout_height
    68.    ="320px"
    69.    
    70.    ></
    71.    ImageView
    72.    >
    73.    
    74.    </
    75.    LinearLayout
    76.    >
    77.   
    复制代码


    MainActivity类:



    1.    
    2.     package
    3.      com.magc.adapter;
    4.     import
    5.      android.app.Activity;
    6.     import
    7.      android.content.Context;
    8.     import
    9.      android.os.Bundle;
    10.     import
    11.      android.util.Log;
    12.     import
    13.      android.view.View;
    14.     import
    15.      android.view.ViewGroup;
    16.     import
    17.      android.view.View.OnClickListener;
    18.     import
    19.      android.widget.AdapterView;
    20.     import
    21.      android.widget.BaseAdapter;
    22.     import
    23.      android.widget.Gallery;
    24.     import
    25.      android.widget.ImageView;
    26.     import
    27.      android.widget.AdapterView.OnItemClickListener;
    28.     public
    29.      
    30.     class
    31.      MainActivity
    32.     extends
    33.      Activity {
    34.     private
    35.      Gallery gallery;
    36.     private
    37.      ImageView imgview;
    38.     private
    39.      
    40.     int
    41.     [] imgs
    42.     =
    43.      {R.drawable.a6,R.drawable.a1,R.drawable.a2,R.drawable.a3,R.drawable.a4,R.drawable.a5};
    44.     /**
    45.      Called when the activity is first created.
    46.     */
    47.    
    48. @Override
    49.     public
    50.      
    51.     void
    52.      onCreate(Bundle savedInstanceState) {
    53.     super
    54.     .onCreate(savedInstanceState);
    55. setContentView(R.layout.main);
    56. imgview
    57.     =
    58.      (ImageView)findViewById(R.id.iv);
    59. gallery
    60.     =
    61.      (Gallery)findViewById(R.id.gallery1);
    62. MyImgAdapter adapter
    63.     =
    64.      
    65.     new
    66.      MyImgAdapter(
    67.     this
    68.     );
    69. gallery.setAdapter(adapter);
    70. gallery.setOnItemClickListener(
    71.     new
    72.      OnItemClickListener() {
    73.     //
    74.     用户点击图片时,将该图片的ResourceID设到下面的ImageView中去,
    75.    
    76.      @Override
    77.     public
    78.      
    79.     void
    80.      onItemClick(AdapterView
    81.     <?>
    82.      arg0, View view,
    83.     int
    84.      position,
    85.     long
    86.      arg3) {
    87. imgview.setImageResource(imgs[position]);
    88. }
    89. });
    90. }
    91.     class
    92.      MyImgAdapter
    93.     extends
    94.      BaseAdapter {
    95.      //自定义图片Adapter以内部类形式存在于MainActivity中,方便访问MainActivity中的各个变量,特别是imgs数组
    96.     private
    97.      Context context;
    98.     //
    99.     用于接收传递过来的Context对象
    100.    
    101.      
    102.     public
    103.      MyImgAdapter(Context context) {
    104.     super
    105.     ();
    106.     this
    107.     .context
    108.     =
    109.      context;
    110. }
    111.     /*
    112.      (non-Javadoc)
    113. * @see android.widget.Adapter#getCount()
    114.     */
    115.    
    116. @Override
    117.     public
    118.      
    119.     int
    120.      getCount() {
    121.     return
    122.      imgs.length;
    123. }
    124.     /*
    125.      (non-Javadoc)
    126. * @see android.widget.Adapter#getItem(int)
    127.     */
    128.    
    129. @Override
    130.     public
    131.      Object getItem(
    132.     int
    133.      position) {
    134.     return
    135.      position;
    136. }
    137.     /*
    138.      (non-Javadoc)
    139. * @see android.widget.Adapter#getItemId(int)
    140.     */
    141.    
    142. @Override
    143.     public
    144.      
    145.     long
    146.      getItemId(
    147.     int
    148.      position) {
    149.     return
    150.      position;
    151. }
    152.     /*
    153.      (non-Javadoc)
    154. * @see android.widget.Adapter#getView(int, android.view.View, android.view.ViewGroup)
    155.     */
    156.    
    157. @Override
    158.     public
    159.      View getView(
    160.     int
    161.      position, View convertView, ViewGroup parent) {
    162.     //
    163.     针对每一个数据(即每一个图片ID)创建一个ImageView实例,
    164.    
    165.      ImageView iv
    166.     =
    167.      
    168.     new
    169.      ImageView(context);
    170.     //
    171.     针对外面传递过来的Context变量,
    172.    
    173.      iv.setImageResource(imgs[position]);
    174. Log.i(
    175.     "
    176.     magc
    177.     "
    178.     , String.valueOf(imgs[position]));
    179. iv.setLayoutParams(
    180.     new
    181.      Gallery.LayoutParams(
    182.     80
    183.     ,
    184.     80
    185.     ));
    186.     //
    187.     设置Gallery中每一个图片的大小为80*80。
    188.    
    189.      iv.setScaleType(ImageView.ScaleType.FIT_XY);
    190.     return
    191.      iv;
    192. }
    193. }
    194. }
    195.    
    复制代码




    示例2:通过一个提示框来选择头像的功能(Gallery和ImageSwitcher结合显示图片)


    待续……

    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2025-2-24 03:48 , Processed in 0.348073 second(s), 37 queries .

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc.

    快速回复 返回顶部 返回列表