Android BaseAdapter使用介绍

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

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

//........上面省略了n行代码;
class MyAdapter extends BaseAdapter{
        //用来接收传递过来的Context上下文对象
        private Context context;
        //构造函数
        public MyAdapter(Context context)
        {
            this.context = context;
        }

        @Override
        public int getCount() {
            //返回图片数组大小
            return pics.length;
        }
        @Override
        public Object getItem(int position) {
            //根据选中项返回索引位置
            return position;
        }
        @Override
        public long getItemId(int position) {
            //根据选中项id返回索引位置
            return position;
        }
     /**
     * @param position      position就是位置从0开始
     * @param convertView   convertView是Spinner,ListView中每一项要显示的view
     * @param parent        parent就是父窗体了,也就是Spinner,ListView,GridView了
     * @return              通常return 的view也就是convertView
     * 绘制的内容均在此实现
     */
        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
        //未优化的getView,这部分可以使用recycle()释放内存、或者BitmapFacotry.Options缩小,或者软引用,或者控制图片资源大小等等很多方法
            ImageView img=new ImageView(context);
            img.setAdjustViewBounds(true);
            img.setImageResource(pics[position]);
            img.setScaleType(ImageView.ScaleType.FIT_XY);
            img.setLayoutParams(new Gallery.LayoutParams(120,120));
            return img;
        }
    }

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

package yaowen.com.baseadapter_gallery;
import android.content.Context;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.Gallery;
import android.widget.ImageView;
import android.widget.TextView;
public class Main extends AppCompatActivity {
    private Gallery gallery;
    private ImageView imageView;
    private TextView textView;
    //图片数组
    private int[] pics={
            R.drawable.pic1,R.drawable.pic2,
            R.drawable.pic3,R.drawable.pic4,
            R.drawable.pic5,R.drawable.pic6
    };
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        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);
        MyAdapter adapter=new MyAdapter(this);
        gallery.setAdapter(adapter);
        gallery.setOnItemClickListener(new Gallery.OnItemClickListener(){
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                int i=position+1;
                imageView.setImageResource(pics[position]);
                textView.setText("这是第"+i+"张图片");
            }
        });
    } 
    //........这里上面的代码
 }

下面是main.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=".Main">
    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:layout_gravity="center">
    <ImageView
        android:id="@+id/imageView"
        android:layout_width="200dp"
        android:layout_height="300dp"
        android:layout_gravity="center"/>
    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"/>
    </LinearLayout>
    <Gallery
        android: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 BaseAdapter使用介绍

Android BaseAdapter使用介绍

你可能感兴趣的:(android,BaseAdapter,数据接口,基础数据接口)