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,如有不对,希望多多指正。谢谢
时间: 2024-12-16 10:33:33