Android(安卓)BaseAdapter使用介绍
16lz
2021-01-26
类概述
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>
运行效果图:
更多相关文章
- Android(安卓)SwipeMenuListView策滑实现各种删除和打开功能
- Android(安卓)微信分享图片!!!
- Android(安卓)google VR全景图导航
- Anko for Android
- Android中的Handler的post方法详解
- android使用java的Base64加密产生的问题
- Android(安卓)TextView的图片和文字居中探索
- Android获取SD卡上图片和视频缩略图的几个例子
- App源码分享大赛精彩代码日报