在讲BaseAdapter之前我们需要知道android的adapter是个什么东西
什么是Adapter
Adapter翻译成中文的意思是适配器,它的作用是让ListView和GridView展示Adapter中的数据。
换句话说当你用ListView或GridView的时候,你想让他们展示一些数据(内容),你就需要将这些数据(内容)交给Adapter,让Adapter来处理这些数据之后给ListView或GridView来显示。
怎么接收数据
在使用BaseAdapter时,需要自己写一个类来继承BaseAdapter。继承一个类后需要写一个构造函数,可以利用这构造函数来接收数据,接收的数据通常是一个List。
例:
public class MyAdapter extends BaseAdapter{
private Context context;
private List data;
public MyAdapter(Context context, List data){
super();
this.context = context;
this.data = data;
}
}
Adapter怎么处理数据
Adapter想要处理数据就需要重写父类的一些方法。
getCount() 方法是得到Adapter接收到的数据的长度,也就是List内数据的数量
例
@Override
public int getCount() {
//返回data中数据的数量
return data.size();
}
getItem(int i) 方法是得到List中的某个数据
@Override
public Object getItem(int i) {
return data.get(i);
}
getItemId(int i)的作用是得到List中的某个数据的下标
@Override
public long getItemId(int i) {
return i;
}
getView(int i, View view, ViewGroup viewGroup)的作用是得到一个View,这个View就是ListView和GridView中显示的内容。也就是说你想要ListView和GridView每个格子显示什么内容,就对这个返回的view进行相应的操作就可与了,例如给这个view加一个点击事件。
view.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
}
});
下面是重写父类方法的事例
public View getView(int i, View view, ViewGroup viewGroup){
//给返回的view加载布局
view = LayoutInflater.from(context).inflate(R.layout.item,null);
//这个返回的view就是ListView和GridView中每个格子显示的内容
return view;
}