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入门到精通教程
查看: 493|回复: 0

开发交流:Android基础类之BaseAdapter

[复制链接]

该用户从未签到

发表于 2011-10-24 09:34:35 | 显示全部楼层 |阅读模式
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图片时,会同时在下面以大图形式显示出来该图片
布局文件:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"   
androidrientation="vertical"   
android:layout_width="fill_parent"   
android:layout_height="fill_parent"    >
<TextView      
android:layout_width="fill_parent"     
android:layout_height="wrap_content"     
android:text="@string/hello"    />   
<Gallery     
android:id="@+id/gallery1"     
android:layout_width="match_parent"     
android:spacing="5px"     
android:layout_height="wrap_content" >
</Gallery>
<ImageView    android:id="@+id/iv"   
android:layout_gravity="center_vertical"   
android:layout_marginTop="20px"  
  android:layout_width="320px"   
android:layout_height="320px"    >
</ImageView>   
</LinearLayout>

MainActivity类:
package com.magc.adapter;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.Gallery;
import android.widget.ImageView;
import android.widget.AdapterView.OnItemClickListener;

public class MainActivity extends Activity {   
private Gallery gallery;   
private ImageView imgview;   
private int[] imgs = {R.drawable.a6,R.drawable.a1,R.drawable.a2,R.drawable.a3,R.drawable.a4,R.drawable.a5};   
/** Called when the activity is first created. */   
@Override   
public void onCreate(Bundle savedInstanceState) {        
super.onCreate(savedInstanceState);        
setContentView(R.layout.main);        
imgview = (ImageView)findViewById(R.id.iv);      
gallery = (Gallery)findViewById(R.id.gallery1);        
MyImgAdapter adapter = new MyImgAdapter(this);        
gallery.setAdapter(adapter);        
gallery.setOnItemClickListener(new OnItemClickListener() {           
//用户点击图片时,将该图片的ResourceID设到下面的ImageView中去,           
@Override            
public void onItemClick(AdapterView<?> arg0, View view, int position,                 
   long arg3) {                              
imgview.setImageResource(imgs[position]);                       
     }     
   });    }        
class MyImgAdapter extends BaseAdapter {    
//自定义图片Adapter以内部类形式存在于MainActivity中,方便访问MainActivity中的各个变量,特别是imgs数组            private Context context;//用于接收传递过来的Context对象
         
public MyImgAdapter(Context context) {               
super();               
this.context = context;           
}         
      
  @Override            
public int getCount() {              
  return imgs.length;         
   }         
         
@Override            
public Object getItem(int position) {               
return position;           
}           
         
@Override            
public long getItemId(int position) {               
return position;         
  }           
         
  @Override            
public View getView(int position, View convertView, ViewGroup parent) {   
            //针对每一个数据(即每一个图片ID)创建一个ImageView实例,            
    ImageView iv = new ImageView(context);//针对外面传递过来的Context变量,         
      iv.setImageResource(imgs[position]);               
Log.i("magc", String.valueOf(imgs[position]));              
  iv.setLayoutParams(new Gallery.LayoutParams(80, 80));
//设置Gallery中每一个图片的大小为80*80。               
iv.setScaleType(ImageView.ScaleType.FIT_XY);              
  return iv;         
   }      
}   
}

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


http://www.cnblogs.com/mandroid/archive/2011/04/05/2005525.html
回复

使用道具 举报

该用户从未签到

发表于 2011-10-24 09:34:38 | 显示全部楼层

Re:开发交

我转的。不是我写的。。
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2011-10-24 09:34:41 | 显示全部楼层

Re:开发交

收藏了 收藏了
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2011-10-24 09:34:43 | 显示全部楼层

Re:开发交

好好学习吧。我会持续更新的
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-10 22:34 , Processed in 0.311446 second(s), 34 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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