课堂笔记:
自定义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
//继承BaseAdapter为ListView、Spinners、GRidWiew、Gallery等控件填充数据
//GridView控件是按表格区域显示的 0
public class ImageAap extends BaseAdapter{
//自定义adapter需要继承四个方法:常用的只有两个getCount,getView
//图片数据源
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) {
//parent是View的父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
本文介绍如何为Android应用中的GridView自定义Adapter,通过继承BaseAdapter并重写关键方法,实现图片展示的功能。文章提供了完整的代码示例及布局文件配置。
1229

被折叠的 条评论
为什么被折叠?



