Adapter类下的Gallery实例详解

通常我们更多的继承BaseAdapter来编写自己的Adapter类,因为BaseAdapter类是其他Adapter类的基类。在世界的运用过程中呢,我们一般需要重写这类的一些方法:

getCount() ;获取当前Adapter的Items数目

getItem(int position);获取相应Position(位置)的Item

getItemId(int position);获取相应position的Item在LIst中的row id

getView(int positon,View convertView,ViewGroup parent);获取在指定position所要显示的data的view

getView()方法很重要,主要是将获取数据后的View组件返回,比如,可以再此方法中读取到所定义的GridView中的每一行里ImageView传递过来的属性及数据。

下面有一个例子:

xml文件:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:orientation="vertical"

tools:context="com.example.gsllery.MainActivity" >

<TextView

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="@string/hello_world" />

<Gallery

android:id="@+id/gallery1"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:spacing="5px" />

<ImageView android:id="@+id/imageView1"

android:layout_gravity="center_vertical"

android:layout_marginTop="20px"

android:layout_width="320px"

android:layout_height="320px"

/>

</LinearLayout>

主程序文件:

package com.example.gsllery;

import android.content.Context;

import android.os.Bundle;

import android.support.v7.app.ActionBarActivity;

import android.util.Log;

import android.view.Menu;

import android.view.MenuItem;

import android.view.View;

import android.view.ViewGroup;

import android.widget.AdapterView;

import android.widget.AdapterView.OnItemClickListener;

import android.widget.BaseAdapter;

import android.widget.Gallery;

import android.widget.ImageView;

//Adapter的使用方法

public class MainActivity extends ActionBarActivity {

// 定义Gallery和ImageView的组件

private Gallery gallery;

private ImageView imgview;

// 定义数据源

private int[] imgs={

R.drawable.f1,

R.drawable.f2,

R.drawable.f3,

R.drawable.f4,

R.drawable.f5,

R.drawable.f6,

R.drawable.f7,

R.drawable.f8,

R.drawable.f9,

};

// 当Activity首次响应时调用

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

// 设置一个Activity的显示界面,显示界面在res文件夹下的layout 中

setContentView(R.layout.activity_main);

imgview=(ImageView)findViewById(R.id.imageView1);

gallery=(Gallery)findViewById(R.id.gallery1);

MyImgAdapter adapter=new MyImgAdapter(this);

gallery.setAdapter(adapter);

// 点击图片时,将该图片的ID传给下面的ImageView中

gallery.setOnItemClickListener(new OnItemClickListener(){

public void onItemClick(AdapterView<?>arg0,View view,int position,long arg3){

imgview.setImageResource(imgs[position]);

}

});

}

// 自定义图片Adapter以内部类形式存在于mainActivity中

// 方便访问MainActivity中的各个变量,特别是imgs数组

class MyImgAdapter extends BaseAdapter{

// 定义Context上下文,在本例中是只主程序

private Context context;

public MyImgAdapter(Context context){

super();

this.context=context;

}

// 获得图片的数量

public int getCount(){

return imgs.length;

}

// 获得图片在库中的位置

public Object getItem(int position){

return position;

}

// 获得图片ID

public long getItemId(int position){

return position;

}

// 当列表里的每一项显示到页面时

// 都会调用Adapter的getView方法返回一个View

public View getView(int position ,View convertView,ViewGroup parent){

// 针对每一个数据(即每一个图片id)创建一个ImageView实例

ImageView imageView=new ImageView(context);

// 设置图片数据源

imageView.setImageResource(imgs[position]);

// 写日志

Log.i("magc", String.valueOf(imgs[position]));

// 设置Gallery中每一个图片的大小80*80

imageView.setLayoutParams(new Gallery.LayoutParams(80,80));

// 设置显示比例类型

imageView.setScaleType(ImageView.ScaleType.FIT_XY);

return imageView;

}

}

@Override

public boolean onCreateOptionsMenu(Menu menu) {

// Inflate the menu; this adds items to the action bar if it is present.

getMenuInflater().inflate(R.menu.main, menu);

return true;

}

@Override

public boolean onOptionsItemSelected(MenuItem item) {

// Handle action bar item clicks here. The action bar will

// automatically handle clicks on the Home/Up button, so long

// as you specify a parent activity in AndroidManifest.xml.

int id = item.getItemId();

if (id == R.id.action_settings) {

return true;

}

return super.onOptionsItemSelected(item);

}

}

时间: 2024-07-30 18:39:46

Adapter类下的Gallery实例详解的相关文章

php中自动加载类_autoload()和spl_autoload_register()实例详解

一._autoload 自动加载类:当我们实例化一个未定义的类时,就会触此函数.到了php7.1以后版本不支持此函数好像抛弃了 新建一个类文件名字自己随便去:news类在auto.php文件里面去实例news类而没有引入该类,可以用_autoload自动加载方法类去处理. news.class.php文件 class news{ function do_new() { echo 'aaa'; } } auto.php文件使用_autoload函数要定义函数体自己去定义 function __au

PHP类和对象函数实例详解

1. interface_exists.class_exists.method_exists和property_exists: 顾名思义,从以上几个函数的命名便可以猜出几分他们的功能.我想这也是我随着对PHP的深入学习而越来越喜欢这门编程语言的原因了吧.下面先给出他们的原型声明和简短说明,更多的还是直接看例子代码吧. bool interface_exists (string $interface_name [, bool $autoload = true ]) 判断接口是否存在,第二个参数表示

C# Oracle数据库操作类实例详解

本文所述为C#实现的Oracle数据库操作类,可执行超多常用的Oracle数据库操作,包含了基础数据库连接.关闭连接.输出记录集.执行Sql语句,返回带分页功能的dataset .取表里字段的类型和长度等,同时还有哈稀表自动插入数据库等高级任务.需要特别指出的是:在执行SQL语句,返回 DataReader之前一定要先用.read()打开,然后才能读到数据,再用hashTable对数据库进行insert,update,del操作,注意此时只能用默认的数据库连接"connstr". 本文

tco/iP协议族——IP工作原理及实例详解(下)

 IP协议详解 上一篇文章文章主要介绍了IP服务的特点,IPv4头部结构IP分片,并用tcpdump抓取数据包,来观察IP数据报传送过程中IP的格式,以及分片的过程.本文主要介绍IP路由,IP转发,重定向和IPv6头部结构. IP路由 IP协议的一个核心任务是数据报的路由,即决定发送数据报到目标机器的路径.为了理解IP路由过程,我们先简要分析IP模块的基本流程. IP模块工作流程 从右往左分析上图,它首先对该数据报的头部做CRC校验,确认无误之后就分析其头部的具体信息. 如果该IP数据报的头

23、磁盘管理—磁盘阵列(RAID)实例详解

磁盘阵列(RAID)实例详解 raid技术分类 软raid技术 硬raid技术 Raid和lvm的区别 为什么选择用raid RAID详解 RAID-0 RAID-1 RAID-5 Raid-10 Raid的管理 案例:创建一个raid10+冗余盘 磁盘阵列(RAID)实例详解 Raid(磁盘阵列)级别介绍 Raid有"廉价磁盘冗余阵列"的意思,就是利用多块廉价的硬盘组成磁盘组,让数据分部储存在这些硬盘里面,从而达到读取和写入加速的目的:也可以用作数据的冗余,当某块硬盘损毁后,其他硬盘

Cocos2d-x 3.X手游开发实例详解

Cocos2d-x 3.X手游开发实例详解(最新最简Cocos2d-x手机游戏开发学习方法,以热门游戏2048.卡牌为例,完整再现手游的开发过程,实例丰富,代码完备,Cocos2d-x作者之一林顺和泰然网创始人杨雍力荐) 于浩洋 著   ISBN 978-7-121-23998-4 2014年9月出版 定价:59.00元 356页 16开 编辑推荐 以Cocos2d-x V3.0为框架全面讲解手游开发的知识和方法 以热门游戏2048.卡牌为例,完整再现手游的开发过程 Cocos2d-x作者之一林

CSS中伪类及伪元素用法详解

原文:CSS中伪类及伪元素用法详解 伪类的分类及作用: 注:该表引自W3School教程 伪元素的分类及作用: 接下来让博主通过一些生动的实例(之前的作业或小作品)来说明几种常用伪类的用法和效果,其他的读者可以自己尝试: :active  大致效果为用鼠标点击时,元素增加特效,鼠标松开时,特效消失.多用在按钮的点击上. 写法: 这里id为box的是一div块,在css中首先设置了他的基本样式,下面为加入:active伪类后需要修改的样式. 未点击时: 点击之后: :active.:hover.:

Android Touch系统简介(二):实例详解onInterceptTouchEvent与onTouchEvent的调用过程

上一篇文章主要讲述了Android的TouchEvent的分发过程,其中有两个重要的函数:onInterceptTouchEvent和onTouchEvent,这两个函数可被重装以完成特定的逻辑.onInterceptTouchEvent的定义为于ViewGroup中,默认返回值为false,表示不拦截TouchEvent.onTouchEvent的定义位于View中,当ViewGroup要调用onTouchEvent时,会利用super.onTouchEvent.ViewGroup调用onTo

linux基础-磁盘阵列(RAID)实例详解

磁盘阵列(RAID)实例详解 raid技术分类 软raid技术 硬raid技术 Raid和lvm的区别 为什么选择用raid RAID详解 RAID-0 RAID-1 RAID-5 Raid-10 Raid的管理 案例:创建一个raid10+冗余盘 磁盘阵列(RAID)实例详解 Raid(磁盘阵列)级别介绍 Raid有"廉价磁盘冗余阵列"的意思,就是利用多块廉价的硬盘组成磁盘组,让数据分部储存在这些硬盘里面,从而达到读取和写入加速的目的:也可以用作数据的冗余,当某块硬盘损毁后,其他硬盘