BaseAdapter是个抽象类,需要我们继承编写子类实现自定义ListView适配器
1.自定义的adapter类
class MyAdapter extends BaseAdapter
{
View MyView;
//数据源
int img[]={R.drawable.f13,R.drawable.f14};
String str[]={"图片1","图片2"};
/**
* @return 返回项的个数
*/
@Override
public int getCount() {
return str.length;
}
/**
* @param i
* @return 返回项对象
*/
@Override
public Object getItem(int i) {
return null;
}
/**
* @param i
* @return 返回项的索引
*/
@Override
public long getItemId(int i) {
return i;
}
/**
* @param i 项索引
* @param view 项布局文件
* @param viewGroup
* @return 返回每一项的视图
*/
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
/**
*view参数是自定义的项布局文件,第一次执行时是null,所以需要进行判断,如果是null则利用LayoutInflater进行解析
*之后系统会将view自动放入缓存,所以下次执行时则不用再次进行解析就可以使用,提高效率
*/
if(view==null) {
LayoutInflater inflater=LayoutInflater.from(adapterActivity.this);//根据上下文创建解析对象
MyView =inflater.inflate(R.layout.base_adapter_item, null, false);//根据布局文件解析成view
}
MyView=view;
//1.获取控件
TextView textView=(TextView)MyView.findViewById(R.id.tv);
ImageView imageView=(ImageView)MyView.findViewById(R.id.imageView);
//2.根据索引从数据源中获取内容填充
textView.setText(str[i]);
imageView.setImageResource(img[i]);
return MyView;
}
}
2.执行的java代码
MyAdapter myAdapter=new MyAdapter();//创建adapter对象
listView.setAdapter(myAdapter);//listView
3.效果