Android自定义adapter

本文介绍如何为Android应用中的GridView自定义Adapter,通过继承BaseAdapter并重写关键方法,实现图片展示的功能。文章提供了完整的代码示例及布局文件配置。

 课堂笔记:

自定义adapter需要继承BaseAdapter类(抽象类)

一般当系统提供的适配器无法满足需求是才会使用自定义的适配器

重写四个方法:

getCount用于反回数据源的长度

getItem 返回数据源

getItemId    id

getView  返回viwe

 

列子

package com.example.luo2;

import android.content.Context;

import android.view.View;

import android.view.ViewGroup;

import android.widget.BaseAdapter;

import android.widget.GridView;

import android.widget.ImageView;

 

//自定义Adapter继承BaseAdapter

//继承BaseAdapterListViewSpinnersGRidWiewGallery等控件填充数据

//GridView控件是按表格区域显示的 0

public class ImageAap extends BaseAdapter{

//自定义adapter需要继承四个方法:常用的只有两个getCountgetView

    

//图片数据源

Integer[] mTHUmbids={R.drawable.abc_ab_bottom_solid_light_holo,

R.drawable.ic_launcher,

R.drawable.ic_launcher,

R.drawable.ic_launcher,

R.drawable.ic_launcher,

R.drawable.ic_launcher,

R.drawable.ic_launcher,

R.drawable.ic_launcher, };

//上下文

private Context context;

public  ImageAap(Context context) {

 this.context=context;

}

 

 

@Override

public int getCount() {

// TODO Auto-generated method stub

//返回数据源的长度

return mTHUmbids.length;

}

 

@Override

public Object getItem(int position) {

// TODO Auto-generated method stub

//返回某个图片源

return mTHUmbids[position];

}

 

@Override

public long getItemId(int position) { //数据源的id

// TODO Auto-generated method stub

return 0;

}

 

@Override         

public View getView(int position, ViewconvertView, ViewGroupparent) {

 //parentView的父View

          //convertView是要重用的View

//定义要返回的view

ImageView imageView=null;

//判断convertView是否为null为空则创建

if(convertView==null){

//实例化imageView

imageView=new ImageView(context);

/*这一句话其实是子对父的,也就是父布局下的子控件要设置这句话,并且由于布局很多,也不同,虽然都继承至ViewGroup但是各/个布局的局性和方法有很大的不同*/

imageView.setLayoutParams(new GridView.LayoutParams(85,85));

/*  按比例扩大图片的size居中显示,使得图片长(宽)等于或大于View的长(宽) */

imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);

//设置图片间距

imageView.setPadding(8, 8, 8, 8);

}else{

imageView=(ImageView)convertView;

}

//设置图片

imageView.setImageResource(mTHUmbids[position]);

//返回ImageView

return imageView;

}

}

 

 

Activity类

 

@Override

protected void onCreate(BundlesavedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.customadapter);

GridView gridView=(GridView) findViewById(R.id.gv);

gridView.setAdapter(new ImageAap(this));

//gridView.setOnClickListener(new );

gridView.setOnItemClickListener(new OnItemClickListener(){

 

@Override

public void onItemClick(AdapterView<?>parent, Viewview,

int position,long id) {

Toast.makeText(MainActivity.this,"hello", Toast.LENGTH_SHORT).show();

}

});

}

 

Customadapter.Xml:

<?xml version="1.0" encoding="utf-8"?>

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

    android:id="@+id/gv"

    android:layout_width="fill_parent"

    android:layout_height="fill_parent" 

    android:columnWidth="90dp"

    android:gravity="center"

    android:horizontalSpacing="10dp"

    android:numColumns="auto_fit"

    android:stretchMode="columnWidth"

    android:verticalSpacing="10dp"

    >

    

 

</GridView>

<!--

columnWidth列的宽度

gravity="center"垂直居中显示

horizontalSpacing定义列之间的间隔

numColumns="auto_fit" 设置GridView列宽并尽可能的填满可用空间

stretchMode="columnWidth"     缩放与列宽大小同步

verticalSpacing     垂直边距

 -->

      效果图:点击图片后显示hello

874471992

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值