Android基础类之BaseAdapter

BaseAdapter就Android应用程序中经常用到的基础数据适配器,它的主要用途是将一组数据传到像ListView、Spinner、Gallery及GridView等UI显示组件,它是继承自接口类Adapter,
1、Adapter类简介
1)、Adapter相关类结构如下图所示:
Adapter
自定义Adapter子类,就需要实现上面几个方法,其中最重要的是getView()方法,它是将获取数据后的View组件返回,如ListView中每一行里的TextView、Gallery中的每个ImageView。
     2)、Adapter在Android应用程序中起着非常重要的作用,应用也非常广泛,它可看作是数据源和UI组件之间的桥梁,其中Adapter、数据和UI之间的关系,可以用下图表示:
t2A9A
3)、常用子类
Adapter常用子类
2、BaseAdapter简介
BaseAdapter是实现了ListAdapter和SpinnerAdapter两个接口,当然它也可以直接给ListView和Spinner等UI组件直接提供数据。
相关类结构如下图所示:
tCCA2

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  里面的程序也不错,参考下...
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值