Android BaseAdapter(基础适配器)的用法,适配器的作用主要是用来给诸如(Spinner、ListView、GridView)来填充数据的。而(Spinner、ListView、GridView)都有自己的适配器(记起来麻烦)。但是若直接使用baseAdapter的话就不用担心这个问题了,首先看看API中的大致介绍

这些就知道为什么baseAdapter是一招鲜了,因为它是实现了adapter,listadapter,spinneradapter的。接下来看一个继承了baseAdapter的类要重写的一些方法:

package com.example.baseadapterforgridview;

import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.GridView;
import android.widget.TextView;

public class MainActivity extends Activity {
    private GridView mGridView;
    private mBaseAdapter baseAdapter;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        baseAdapter = new mBaseAdapter();
        mGridView = (GridView)findViewById(R.id.gridView);
        mGridView.setAdapter(baseAdapter);
        
        
    }
    class mBaseAdapter extends BaseAdapter{

        @Override
        public int getCount() {
            // TODO Auto-generated method stub
            return 42;
        }

        @Override
        public Object getItem(int position) {
            // TODO Auto-generated method stub
            return null;
        }

        @Override
        public long getItemId(int position) {
            // TODO Auto-generated method stub
            return 0;
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            // TODO Auto-generated method stub
            LayoutInflater inflater = LayoutInflater.from(MainActivity.this);
            View mView = inflater.inflate(R.layout.item, null);
//            TextView mTextView = new TextView(getApplicationContext());
//            mTextView.setText("BaseAdapterDemo");
//            mTextView.setTextColor(Color.RED);
            return mView;
        }
        
    } 
    
}

gridview的xml文件:

<RelativeLayout 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:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.baseadapterforgridview.MainActivity" >

     <GridView
        android:id="@+id/gridView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:stretchMode="columnWidth" 
        android:columnWidth="120dip" 
        android:verticalSpacing="10dip"
        android:horizontalSpacing="10dip"
        android:cacheColorHint="@android:color/transparent"
        android:numColumns="auto_fit"
        >
    </GridView>

</RelativeLayout>

每一个item里面的布局文件:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
    <TextView 
        android:id="@+id/text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="texViewtest"/>
    <Button 
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="test"/>

</LinearLayout>

执行的效果:

可以看到,每一个item里面包括了两个元素,一个是textview的内容,另一个是一个button。

在getview()方法里面被注释掉的是一种“加载”布局文件的方法,而使用LayoutInflater~~ 又是另外一种加载xml的方式,这样做的好处是把已经在xml里面定义好的布局文件直接加载拿过来使用。

好啦,这就是一个简单的baseAdapter使用demo,如有不对,希望多多指正。谢谢