BaseAdapter就Android应用程序中经常用到的基础数据适配器,它的主要用途是将一组数据传到像ListView、Spinner、Gallery及GridView等UI显示组件,它是继承自接口类Adapter,
1、Adapter类简介
1)、Adapter相关类结构如下图所示:
自定义Adapter子类,就需要实现上面几个方法,其中最重要的是getView()方法,它是将获取数据后的View组件返回,如ListView中每一行里的TextView、Gallery中的每个ImageView。
2)、Adapter在Android应用程序中起着非常重要的作用,应用也非常广泛,它可看作是数据源和UI组件之间的桥梁,其中Adapter、数据和UI之间的关系,可以用下图表示:
3)、常用子类
2、BaseAdapter简介
BaseAdapter是实现了ListAdapter和SpinnerAdapter两个接口,当然它也可以直接给ListView和Spinner等UI组件直接提供数据。
BaseAdapter是实现了ListAdapter和SpinnerAdapter两个接口,当然它也可以直接给ListView和Spinner等UI组件直接提供数据。
相关类结构如下图所示:
![tCCA2 tCCA2](https://i-blog.csdnimg.cn/blog_migrate/3400f94b791ac83d2eff096152803439.png)
3、示例
布局很简单main.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=".MainActivity"
android:background="@drawable/background" >
<ListView
android:id="@+id/myList"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
</RelativeLayout>
MainActivity类:
package com.example.baseadapter;
import android.os.Bundle;
import android.app.Activity;
import android.graphics.Color;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.TextView;
public class MainActivity extends Activity {
ListView myList;
private int[] imageids = new int[]{
R.drawable.icon_32x32_01,R.drawable.icon_32x32_02,
R.drawable.icon_32x32_03,R.drawable.icon_32x32_04,
R.drawable.icon_32x32_05,R.drawable.icon_32x32_06,
R.drawable.icon_32x32_01,R.drawable.icon_32x32_02,
R.drawable.icon_32x32_03,R.drawable.icon_32x32_04,
R.drawable.icon_32x32_05,R.drawable.icon_32x32_06,
R.drawable.icon_32x32_01,R.drawable.icon_32x32_02,
R.drawable.icon_32x32_03,R.drawable.icon_32x32_04,
R.drawable.icon_32x32_05,R.drawable.icon_32x32_06,
R.drawable.icon_32x32_01,R.drawable.icon_32x32_02,
R.drawable.icon_32x32_03,R.drawable.icon_32x32_04,
R.drawable.icon_32x32_05,R.drawable.icon_32x32_06
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
myList = (ListView)findViewById(R.id.myList);
BaseAdapter adapter = new BaseAdapter() {
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
LinearLayout line = new LinearLayout(MainActivity.this);
line.setOrientation(0);
ImageView image = new ImageView(MainActivity.this);
image.setImageResource(imageids[position]);
TextView text = new TextView(MainActivity.this);
text.setText("number--->"+(position+1));
text.setTextSize(20);
text.setTextColor(Color.YELLOW);
line.addView(image);
line.addView(text);
//返回linearlayout实例
return line;
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return imageids.length;
}
};
myList.setAdapter(adapter);
}
}
程序里面用到的
LinearLayout line = new LinearLayout(MainActivity.this);
line.setOrientation(0);
温习下LinerLayout
/*
* LinerLayout线性布局:
这种布局方式是指在这个里面的控件元素显线性,
我们可以通过setOrientation(int orientation)来指定线性布局的显示方式,
其值有:HORIZONTAL(0)、VERTICAL(1)。默认为HORIZONTAL。与之相关的我们
也可以在布局文件中通过android:orientation来指定。同理,其值也有:horizontal、
vertical
LinearLayout是线性布局控件,它包含的子控件将以横向或竖向的方式排列,
按照相对位置来排列所有的widgets或者其他的containers,超过边界时,某些控件将缺失或消失,
不能完全显示。因此垂直方式排列时,每一行只会有一个 widget或者是container,而不管他们有多宽
,而水平方式排列是将会只有一个行高(高度为最高子控件的高度加上边框高度)。
LinearLayout保持其所包含的 widget或者是container之间的间隔以及互相对齐
(相对一个控件的右对齐、中间对齐或者左对齐)。
* */
参照:http://www.cnblogs.com/mandroid/archive/2011/04/05/2005525.html 里面的程序也不错,参考下...