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.效果