1. BaseAdapter的使用实例
BaseAdapter baseAdapter = new BaseAdapter() {
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ImageView imageView;
if (convertView == null)
{
imageView = new ImageView(GridViewActivity.this);
imageView.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
imageView.setPadding(5, 0, 5, 0);
}
else
{
imageView = (ImageView) convertView;
}
imageView.setImageResource(imageId[position]);
return imageView;
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public Object getItem(int position) {
return position;
}
@Override
public int getCount() {
return imageId.length;
}
};
2. SimpleAdapter的使用实例
public class GridViewActivity extends Activity {
private int[] imageId = new int[] {R.drawable.img01, R.drawable.img02, R.drawable.img03, R.drawable.img04,
R.drawable.img05, R.drawable.img06, R.drawable.img07, R.drawable.img08,
R.drawable.img09, R.drawable.img10, R.drawable.img11, R.drawable.img12, };
private String[] title = new String[] { "花开富贵", "海天一色", "日出", "天路", "一枝独秀",
"云", "独占鳌头", "蒲公英花", "花团锦簇", "争奇斗艳", "和谐", "林间小路" }; // 定义并初始化保存说明文字的数组
private GridView gridView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_gridview);
gridView = (GridView) findViewById(R.id.gridView1);
List
2013-03-23 10:04:07| 分类: 手机软件开发 | 标签:android |举报|字号 订阅
一、适配器介绍
顾名思义,就是把一些数据给弄得适当,适合以便于在View上显示。可以看作是界面数据绑定的一种理解。它所操纵的数据一般都是一些比较复杂的数据,如数组,链表, 数据库,集合等。适配器就像显示器,把复杂的东西按人可以接受的方式来展现。
那么适配器是怎么处理得到的数据,并把它显示出来的呢。其实很简单,说白了适配器它也是一个类,在类里面它实现了父类的这几个方法:
public Object getItem(int position)//根据position得到某一行的记录
public long getItemId(int position)//的到某一条记录的ID
publicView getView(int position, View convertView, ViewGroup parent)
最后是最重要的相比于其它几个方法,它显式的定义了,适配器将要 以什么样的,方式去显示我们所填充的数据,在自定义的适配器里面我们通常会给它写个布局文件
我们常用的适配器一共有三个,当然不包含自定义的适配器,哪三个,我想用过的人都知道
那就是ArrayAdapter,SimpleAdapter,SimpleCursorAdapter 这三个,他们都是继承于BaseAdapter 。
二、ArrayAdapter和SimpleAdapter适配器使用
一般对于前两个适配器,他们的数据来源无非就是String[]或者List 。
下面我们列举两个例一子:
例一,数组作为数据源,填充的是ArrayAdapter
public class Example extends ListActivity{
String[] sex = new String(){"男",“女”} //数据源
ArrayAdapter
public voidonCreate(Bundle SavedInstanceState){
super.onCreate(SavedInstanceStat);
//在对适配器初始化的时候,顺便把数据源装载到适配里,
//this.Android.R.Layout.Simple_List_Item_1这句话的意思是将数据源以系统定义好的样式放到适配器里.
adapter=new ArrayAdapter
this.setAdapter(adapter);//这是一个控件类,所以可以直接将适配器绑定到本身对象中。
}
}
例二:List作为数据源,填充的是SimpleAdapter
ListView list = (ListView)findViewById(R.id.MyListView);
//生成动态数组,并且转载数据
ArrayList
for(int i=0;i<30;i++) {
HashMap
map.put("ItemTitle","This is Title.....");
map.put("ItemText","This is text.....");
mylist.add(map);
}
//生成适配器,数组===》ListItem
SimpleAdapter mSchedule = new SimpleAdapter(
this, //传入上下文对象
mylist, //数据来源
R.layout.my_listitem, //ListItem的XML实现
new String[]{"ItemTitle", "ItemText"}, //动态数组与ListItem对应的子项
new int[] {R.id.ItemTitle,R.id.ItemText} //ListItem的XML文件里面的两个TextView ID
);
list.setAdapter(mSchedule);//添加并且显示
三、SimpleCursorAdapter适配器
应该说着两个例子都不难,都是一些我们经常见到的用法,那么对于SimpleCursorAdapter又是怎么用的呢,SimpleCursorAdapter一般主要用于数据库,它的数据来源一般都是数据库查询得到的Cursor 我们来看下面的例子:
String uriString = “content://contacts/people/”;
Cursor myCursor =managedQuery(Uri.parse(uriString), null, null, null, null);
String[] fromColumns = new String[]{People.NUMBER, People.NAME};
int[] toLayoutIDs = new int[] {R.id.nameTextView, R.id.numberTextView};
SimpleCursorAdapter myAdapter;
myAdapter=newSimpleCursorAdapter(
this, //传入当前的上下文
R.layout.simplecursorlayout, //一个layout资源
myCursor, //一个游标
fromColumns, //包含使用的列的名字的数组
toLayoutIDs
//包含View中的资源ID的数组,与fromColumns大小相同,用于显示相应列的数据值
);
myListView.setAdapter(myAdapter);
//我们把一个游标绑定到了ListView上,并使用自定义的layout显示来显示每一个Item。
四,自定义适配器
为什么要定义自己的适配器呢,原因就在于,当我们想用一些其它的展现方式,或者是我们需要的,呈现方式,这是就得DIY了。
首先我们定义一个类让它继承自BaseAdapter,再让它实现一里面所说的那几个方法。那么这个自定义适配器就算好了。
里面的一些方法我在上面都介绍过了,在这就不在赘述了:
public class ImageAdapter extendsBaseAdapter {
private Context mcontext;
//构造函数里面有两个参数,一个是数据的来源,另一个是上下文。
public ImageAdapter(Integer[] imgIds,Context c){
mcontext=c;
imageIds=imgIds;
}
publicint getCount() {
return imageIds.length;
}
publicObject getItem(int position) {
return null;
}
publiclong getItemId(int position) {
return position;
}
//主要工作是做在这里,可以自定义布局,在这里我就不多说了
publicView getView(int position, View convertView, ViewGroup parent) {
ImageView imageview = newImageView(mcontext);
imageview.setImageResource(imageIds[position]);
imageview.setLayoutParams(newGallery.LayoutParams(120,120));
imageview.setScaleType(ImageView.ScaleType.FIT_CENTER);
return imageview;
}
}
最后这个适配器就可以用了。
参考网址:http://spring.wind2006.blog.163.com/blog/static/1205586520132231047411/