DownOL 软件仓库– 软件下载,字节世界与新知

Android App开发笔记之通用Adapter

发表于:2024-04-29 作者:创始人
编辑最后更新 2024年04月29日,在Android开发中,会比较多地使用列表布局,如ListView、GridView、Gallery、Spinner等。无论是ListView还是GridView,需使用Adapter提供数据,如简单

在Android开发中,会比较多地使用列表布局,如ListView、GridView、Gallery、Spinner等。无论是ListView还是GridView,需使用Adapter提供数据,如简单性的ArrayAdapter,SimpleAdapter,SimpleCursorAdapter等。但实际开发中,Item布局较为复杂,因而较多使用的是BaseAdapter。

一般做法是不同的列表布局New一个不同的XXAdapter继承BaseAdapter,虽然可行,但这样会增加项目的代码量,使用起来也颇为麻烦。

有没有通用的BaseAdapter呢?当然有。

依不同的项目有不同的数据源,可自行定义BaseAdapter,如CommonBaseAdapter extends BaseAdapter,数据源为List mList;CommForMapBaseAdapter extends BaseAdapter,数据源为Map> mList等等。

根据选择的数据源类型,实现BaseAdapter里的方法:重载一个外部使用的方法以及BaseAdapter重写的方法getCount();getItem(int position);getItemId(int position)等,

其中,最重要的还是getView方法:

getView方法里有ViewHolder.getViewHolder()方法,具体实现为:

在ViewHolder这个类里,可以根据项目UI元素添加更多需要的方法,如设置TextView值,Button点击,View是否可见,ImageLoader工具的引用等等,如:

每个不同的方法需用到方法getView(int ViewID),ViewID为控件的id:

万事俱备,东风吹来,哪里需要adapter,哪里就new一个自定义的BaseAdapter( ...){...},实现里面的convert方法,如holder.setText(R.id.name, name)即可。

这样一来,你会发现使用BaseAdapter是如此的简单方便快捷,会赞不绝口~

2022-05-09 21:54:59
0