类概述
BaseAdapter主要用于ListView(实现指定的ListAdapter接口)、Spinner(实现指定的SpinnerAdapter接口)以及GridView的共同实现一个公共基类适配器。

假如现在我们要实现一个MyAdapter类:

//........上面省略了n行代码;classMyAdapterextendsBaseAdapter{//用来接收传递过来的Context上下文对象privateContextcontext;//构造函数publicMyAdapter(Contextcontext){this.context=context;}@OverridepublicintgetCount(){//返回图片数组大小returnpics.length;}@OverridepublicObjectgetItem(intposition){//根据选中项返回索引位置returnposition;}@OverridepubliclonggetItemId(intposition){//根据选中项id返回索引位置returnposition;}/***@parampositionposition就是位置从0开始*@paramconvertViewconvertView是Spinner,ListView中每一项要显示的view*@paramparentparent就是父窗体了,也就是Spinner,ListView,GridView了*@return通常return的view也就是convertView*绘制的内容均在此实现*/@OverridepublicViewgetView(intposition,ViewconvertView,ViewGroupparent){//未优化的getView,这部分可以使用recycle()释放内存、或者BitmapFacotry.Options缩小,或者软引用,或者控制图片资源大小等等很多方法ImageViewimg=newImageView(context);img.setAdjustViewBounds(true);img.setImageResource(pics[position]);img.setScaleType(ImageView.ScaleType.FIT_XY);img.setLayoutParams(newGallery.LayoutParams(120,120));returnimg;}}

缺失的Main.java的代码入下:

packageyaowen.com.baseadapter_gallery;importandroid.content.Context;importandroid.support.v7.app.AppCompatActivity;importandroid.os.Bundle;importandroid.view.Menu;importandroid.view.MenuItem;importandroid.view.View;importandroid.view.ViewGroup;importandroid.widget.AdapterView;importandroid.widget.BaseAdapter;importandroid.widget.Gallery;importandroid.widget.ImageView;importandroid.widget.TextView;publicclassMainextendsAppCompatActivity{privateGallerygallery;privateImageViewimageView;privateTextViewtextView;//图片数组privateint[]pics={R.drawable.pic1,R.drawable.pic2,R.drawable.pic3,R.drawable.pic4,R.drawable.pic5,R.drawable.pic6};@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.main);imageView=(ImageView)findViewById(R.id.imageView);gallery=(Gallery)findViewById(R.id.gallery);textView=(TextView)findViewById(R.id.textView);MyAdapteradapter=newMyAdapter(this);gallery.setAdapter(adapter);gallery.setOnItemClickListener(newGallery.OnItemClickListener(){@OverridepublicvoidonItemClick(AdapterView<?>parent,Viewview,intposition,longid){inti=position+1;imageView.setImageResource(pics[position]);textView.setText("这是第"+i+"张图片");}});}//........这里上面的代码}

下面是main.xml的代码:

<LinearLayoutxmlns: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=".Main"><LinearLayoutandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:orientation="vertical"android:layout_gravity="center"><ImageViewandroid:id="@+id/imageView"android:layout_width="200dp"android:layout_height="300dp"android:layout_gravity="center"/><TextViewandroid:id="@+id/textView"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center"/></LinearLayout><Galleryandroid:id="@+id/gallery"android:layout_width="fill_parent"android:layout_height="wrap_content"android:spacing="3dp"android:layout_gravity="bottom"android:gravity="left"></Gallery></LinearLayout>

运行效果图:

更多相关文章

  1. Android(安卓)SwipeMenuListView策滑实现各种删除和打开功能
  2. Android(安卓)微信分享图片!!!
  3. Android(安卓)google VR全景图导航
  4. Anko for Android
  5. Android中的Handler的post方法详解
  6. android使用java的Base64加密产生的问题
  7. Android(安卓)TextView的图片和文字居中探索
  8. Android获取SD卡上图片和视频缩略图的几个例子
  9. App源码分享大赛精彩代码日报

随机推荐

  1. Android Spinner的ArrayAdapter和Spinner
  2. Android Camera照相机
  3. Android 判断 PendingIntent 是否存在
  4. org.gradle.api.GradleException: Lint f
  5. (转载) Android Property System
  6. [置顶] Android中保存数据常用的方法
  7. Android Framewok引用第三方jar包
  8. 没看完的Android + Handler + Runnable +
  9. Android 增量更新实例
  10. Android(安卓)属性动画(Property Animatio