• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

BaseToolsLibrary: Android通用适配器和常用的工具类

原作者: [db:作者] 来自: 网络 收藏 邀请

开源软件名称:

BaseToolsLibrary

开源软件地址:

https://gitee.com/VeiZhang/BaseToolsLibrary

开源软件介绍:

Android通用适配器和常用的工具类

  • Android通用的Adapter for ListView,GridView,RecyclerView等,支持多种ItemType布局
  • Android常用的工具类集合

Download

目录


导入Android Studio

添加jCenter远程依赖到module里的build.gradle:

dependencies {    compile 'com.excellence:basetools:_latestVersion'}

或者直接添加本地Library依赖

compile project(':basetoolslibrary')

注意

在使用DataBinding通用适配器时,记得开启配置

android {    dataBinding {        enabled true    }}

大家来找茬

icon_adapter

icon_common_adapter

icon_multi_adapter

CommonAdapter

ListView,GridView的通用适配器

示例:CommonAdapterActivity

// 创建adapter类继承CommonAdapterprivate class AppGridAdapter extends CommonAdapter<ResolveInfo>{    public AppGridAdapter(List<ResolveInfo> data, int layoutId)    {        super(data, layoutId);    }    @Override    public void convert(ViewHolder viewHolder, ResolveInfo item, int position)    {        ImageView iconView = viewHolder.getView(android.R.id.icon);        iconView.setImageDrawable(item.loadIcon(mPackageManager));        viewHolder.setText(android.R.id.text1, item.loadLabel(mPackageManager).toString());    }}
// ViewHolder辅助方法public <T extends View> T getView(int viewId);                                    // 用于获取Item内的子控件,参数为控件的idpublic ViewHolder setText(int viewId, int strId);                                 // 用于设置文本,参数控件id、字符串idpublic ViewHolder setBackgroundResource(int viewId, int resId);                   // 用于设置背景图片,参数控件id、图片idpublic ViewHolder setImageResource(int viewId, int resId);                        // 用于设置ImageView图片资源,参数控件id、图片idpublic ViewHolder setOnClickListener(int viewId, View.OnClickListener listener);  // 用于点击事件监听***// 可拓展其他方法
// 刷新适配器adapter.notifyNewData(data);

ListView,GridView的多布局通用适配器

示例:MultiItemAdapterActivity

// 多布局适配器private class ChatAdapter extends MultiItemTypeAdapter<People>{    public ChatAdapter(List<People> messages)    {        super(messages);        addItemViewDelegate(new ComputerDelegate());        addItemViewDelegate(new BlueDelegate());        addItemViewDelegate(new PurpleDelegate());    }}// 不同的布局视图private class ComputerDelegate implements ItemViewDelegate<People>{    @Override    public int getItemViewLayoutId()    {        return R.layout.item_computer;    }    @Override    public boolean isForViewType(People item, int position)    {        return item instanceof ComputerData;    }    @Override    public void convert(ViewHolder viewHolder, People item, int position)    {        viewHolder.setText(R.id.computer_text, item.getMsg());    }}

CommonBindingAdapter

开启DataBinding,ListView、GridView通用适配器

示例:CommonBindingAdapterActivity

// 直接创建CommonBindingAdapterCommonBindingAdapter<Flower> adapter = new CommonBindingAdapter<>(mFlowers, R.layout.item_flower, BR.flower);// 设置适配器,等同于ListView.setAdapter()、GridView.setAdapter()mBinding.setAdapter(adapter);

开启DataBinding,ListView,GridView的多布局通用适配器

示例:MultiItemTypeBindingAdapterActivity

// 使用方式同上,主要实现ViewDelegate布局视图接口MultiItemTypeBindingAdapter<Flower> adapter = new MultiItemTypeBindingAdapter<>(mFlowers);adapter.addItemViewDelegate(new RoseViewDelegate());adapter.addItemViewDelegate(new TulipViewDelegate());mBinding.setAdapter(adapter);

BaseRecyclerAdapter

RecyclerView的通用适配器

示例:RecyclerAdapterActivity

// 创建adapter类继承BaseRecyclerAdapterprivate class AppRecyclerAdapter extends BaseRecyclerAdapter<ResolveInfo>{    private PackageManager mPackageManager = null;    public AppRecyclerAdapter(List<ResolveInfo> data, int layoutId)    {        super(data, layoutId);        mPackageManager = getPackageManager();    }    @Override    public void convert(RecyclerViewHolder viewHolder, ResolveInfo item, int position)    {        viewHolder.setText(android.R.id.text1, item.loadLabel(mPackageManager));        viewHolder.setImageDrawable(android.R.id.icon, item.loadIcon(mPackageManager));    }}
// RecyclerViewHolder辅助方法类同ViewHolder辅助方法***

RecyclerView的多布局通用适配器

示例:MultiItemRecyclerAdapterActivity

// 多布局适配器private class WarAdapter extends MultiItemTypeRecyclerAdapter<People>{    public WarAdapter(List<People> data)    {        super(data);        addItemViewDelegate(new ComputerRecyclerDelegate());        addItemViewDelegate(new BlueRecyclerDelegate());        addItemViewDelegate(new PurpleRecyclerDelegate());    }}// 不同的布局视图private class ComputerRecyclerDelegate implements ItemViewDelegate<People>{    @Override    public int getItemViewLayoutId()    {        return R.layout.item_computer;    }    @Override    public boolean isForViewType(People item, int position)    {        return item instanceof ComputerData;    }    @Override    public void convert(RecyclerViewHolder viewHolder, People item, int position)    {        viewHolder.setText(R.id.computer_text, item.getMsg());    }}

BaseRecyclerBindingAdapter

开启DataBinding,RecyclerView的通用适配器

示例:BaseRecyclerBindingAdapterActivity

// 直接创建BaseRecyclerBindingAdapterBaseRecyclerBindingAdapter<Flower> adapter = new BaseRecyclerBindingAdapter<>(mFlowers, R.layout.item_flower, BR.flower);// 设置适配器,等同于RecyclerView.setAdapter()mBinding.setAdapter(adapter);// 注意设置LayoutManager,等同于RecyclerView.setLayoutManager()mBinding.setLayoutManager(new LinearLayoutManager(this));

开启DataBinding,RecyclerView的多布局通用适配器

示例:MultiItemTypeBindingRecyclerAdapterActivity

// 使用方式同上,主要实现ViewDelegate布局视图接口MultiItemTypeBindingRecyclerAdapter<Flower> adapter = new MultiItemTypeBindingRecyclerAdapter<>(mFlowers);adapter.addItemViewDelegate(new RoseViewDelegate());adapter.addItemViewDelegate(new TulipViewDelegate());mBinding.setAdapter(adapter);mBinding.setLayoutManager(new LinearLayoutManager(this));

BasePagerAdapter

ViewPager通用适配器

示例:ViewPagerAdapterActivity

private class NumAdapter extends BasePagerAdapter{    public NumAdapter(int pageCount)    {        super(pageCount);    }    @Override    protected View loadView(Context context, int pageIndex)    {        // 加载每页        TextView textView = new TextView(context);        textView.setText(String.valueOf(pageIndex * mNumScale));        textView.setOnClickListener(new View.OnClickListener()        {            @Override            public void onClick(View v)            {                mNumScale *= 10;                mPageCount += 1;                // 刷新每页                mAdapter.notifyNewData(mPageCount);            }        });        return textView;    }}

Utils

权限

<uses-permission android:name="android.permission.GET_TASKS"/><uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/><uses-permission android:name="android.permission.INTERNET"/><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/><uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/><uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/><uses-permission android:name="android.permission.READ_PHONE_STATE"/>

常用工具类

startAnotherActivity   : Activity跳转setActivityWindowAlpha : 设置Activity窗口透明值isActivityTopStack     : 判断Activity是否在栈顶getLauncherActivity    : 获取某应用入口Activity
getInstalledApps       : 获取安装的全部应用getSystemInstalledApps : 获取安装的系统应用getUserInstalledApps   : 获取安装的第三方应用getPermissionList      : 获取某应用的所有权限checkPermission        : 检测某应用是否有某权限getAppVersionName      : 获取当前应用版本名getAppVersionCode      : 获取当前应用版本号getAppSize             : 获取当前应用大小getAppTime             : 获取当前应用安装时间getAppPath             : 获取当前应用路径getAPKFileSignature    : 获取apk文件的签名getPackageSignature    : 获取某安装应用的签名isAppInstalled         : 判断应用是否安装isAppDebug             : 判断当前应用是否是Debug版本
closeIO        : 关闭IOcloseIOQuietly : 安静关闭IO
bytes2Short               : byte转shortshortToByte               : short转bytebyte2BinStr               : byte转二进制byte2BinStr               : byte数组转二进制str2BinStr                : 字符串转二进制字符串bytes2HexString           : byte数组转16进制字符串hexString2Bytes           : 16进制字符串转byte数组string2HexString          : 字符串转16进制字符串hexString2String          : 16进制字符串转字符串string2Bytes              : 字符串转byte数组bytes2String              : byte数组转字符串byte2Int                  : byte数组转有符号intint2Byte                  : int转4位byte数组unintbyte2long            : 四字节byte数组转无符号longinputStream2OutputStream  : inputStream转outPutStreaminputStream2Bytes         : inputStream转bytesinputStream2String        : inputStream转字符串inputStream2StringBuilder : inputStream转StringBuilder
init         : 初始化,设置存储文件名contains     : 判断键值是否存在setSetting   : 存储配置getString    : 读取字符串配置getBoolean   : 读取Boolean配置getInt       : 读取int配置getLong      : 读取long配置getFloat     : 读取float配置getStringSet : 读取Set<String>配置remove       : 删除配置clear        : 清空配置
getDensity      : 获取当前屏幕分辨率getScaleDensity : 获取当前文字分辨率getScreenWidth  : 获取屏幕宽度getScreenHeight : 获取屏幕高度getScreenSize   : 获取屏幕宽、高dp2px           : dp转pxpx2dp           : px转dpsp2px           : sp转pxpx2sp           : px转sp
getIMEI            : 获取IMEIgetIMSI            : 获取IMSIgetPhone           : 获取手机号getSIM             : 获取SIM卡序列号getSimCountry      : 获取SIM卡国家getSimOperator     : 获取SIM卡运营商getSimOperatorName : 获取SIM卡运营商名字getSimState        : 获取SIM卡状态
isEmpty    : 判断对象是否为空isNotEmpty : 判断对象是否非空
hashTemplate          : 散列加密算法encryptMD5            : MD5加密encryptMD5HexString   : MD5加密转16进制字符串symmetricTemplate     : 对称加密算法encryptDES            : DES加密encryptDES2HexString  : DES加密转16进制字符串decryptDES            : DES解密decryptHexStringDES   : 16进制字符串DES解密encrypt3DES           : 3DES加密encrypt3DES2HexString : 3DES加密转16进制字符串decrypt3DES           : 3DES解密decryptHexString3DES  : 16进制字符串3DES解密encryptAES            : AES加密encryptAES2HexString  : AES加密转16进制字符串decryptAES            : AES解密decryptHexStringAES   : 16进制字符串AES解密rsaTemplate           : 非对称加密算法encryptRSA            : RSA加密encryptRSA2HexString  : RSA加密转16进制decryptRSA            : RSA解密decryptHexStringRSA   : 16进制字符串RSA解密
printException : 打印异常信息字符串
writeFile        : 将字符串、字节数组、输入流写入文件readStream2Bytes : 读取输入流为字节数组readFile2Bytes   : 读取文件为字节数组readFile2String  : 读取文件为字符串copyFile         : 拷贝文件
createNewFile       : 创建文件deleteFile          : 删除文件mkDir               : 创建目录deleteDir           : 删除目录deletePostfixFiles  : 删除目录下的某后缀文件formatFileSize      : 格式化文件大小getFilesSize        : 遍历目录、获取文件大小getFileSize         : 获取文件大小getDirSize          : 遍历目录大小getDirFreeSpace     : 获取目录剩余空间getDirTotalSpace    : 获取目录总空间getDirUsableSpace   : 获取目录可用空间chmod               : 修改目录、文件权限isFileExists        : 判断文件或目录是否存在getFileLastModified : 读取文件最后的修改时间getFileMd5          : 读取文件MD5值
HandlerHolder : 使用必读
drawable2Bitmap : drawable转bitmapbitmap2Drawable : bitmap转drawableview2Bitmap     : view转Bitmap
isIntentAvailable      : 判断Intent是否存在startIntent            : Intent跳转getSettingIntent       : 跳转SettingsgetWiFiIntent          : 隐式开启WiFigetDirectWiFiIntent    : 直接开启WiFigetRoamingIntent       : 跳转到移动网络设置getPermissionIntent    : 开启权限设置getLocationIntent      : 开启定位设置getBluetoothIntent     : 开启蓝牙设置getLocaleIntent        : 开启语言设置getAppIntent           : 跳转应用程序列表界面getAllAppIntent        : 跳转到应用程序界面(所有的)getInstalledAppIntent  : 跳转到应用程序界面(已安装的)getStorageIntent       : 开启存储设置getAccessibilityIntent : 开启辅助设置getSearchIntent        : 跳转到搜索设置getInputMethodIntent   : 跳转输入法设置getInstallIntent       : 安装应用getUninstallIntent     : 卸载应用getShareTextIntent     : 分享文本getShareImageIntent    : 分享图片getDialIntent          : 跳转拨号界面getCallIntent          : 拨打电话getSmsIntent           : 跳转短信界面getSendSmsIntent       : 发送短信getEmailIntent         : 发送邮件getCaptureIntent       : 打开相机getVideoIntent         : 播放本地视频getNetVideoIntent      : 播放网络视频getAudioIntent         : 播放本地音乐
hideSoftInput                : 隐藏软键盘showSoftInput                : 打开软键盘toggleSoftInput              : 如果输入法在窗口上已经显示,则隐藏,反之则显示clickBlankArea2HideSoftInput : 击屏幕空白区域隐藏软键盘
getActiveNetworkInfo    : 获取活动的网络信息isConnected             : 检查网络是否连接isAvailableByPing       : 判断网络是否可用isMobileDataEnabled     : 判断移动数据是否打开setMobileDataEnabled    : 打开或关闭移动数据(舍弃不可用)is4G                    : 判断是否是4G网络isWiFiEnabled           : 判断是否打开WiFisetWiFiEnabled          : 打开或关闭WiFiisEthConnected          : 判断以太网是否连接isEthAvailable          : 判断以太网是否可用isWiFiConnected         : 判断WiFi是否连接isWiFiAvailable         : 判断WiFi是否可用isWiFiAvailableByPing   : 通过ping的方式判断WiFi是否可用getNetworkOperatorName  : 获取网络运营商名称getNetworkType          : 获取当前网络类型getIPAddress            : 获取网络IP地址getDomainAddress        : 根据域名获取ipreadMac                 : 读取Mac地址getWiredMac             : 获取有线Mac地址getWirelessMac          : 获取无线Mac地址
getRootPath                     : 获取根路径getDataPath                     : 获取数据路径getDownloadCachePath            : 获取下载缓存路径getInternalAppDataPath          : 获取内存应用数据路径getInternalAppCodeCacheDir      : 获取内存应用代码缓存路径getInternalAppCachePath         : 获取内存应用缓存路径getInternalAppDbsPath           : 获取内存应用数据库路径getInternalAppDbPath            : 获取内存应用数据库路径getInternalAppFilesPath         : 获取内存应用文件路径getInternalAppSpPath            : 获取内存应用 SP 路径getInternalAppNoBackupFilesPath : 获取内存应用未备份文件路径getExternalStoragePath          : 获取外存路径getExternalMusicPath            : 获取外存音乐路径getExternalPodcastsPath         : 获取外存播客路径getExternalRingtonesPath        : 获取外存铃声路径getExternalAlarmsPath           : 获取外存闹铃路径getExternalNotificationsPath    : 获取外存通知路径getExternalPicturesPath         : 获取外存图片路径getExternalMoviesPath           : 获取外存影片路径getExternalDownloadsPath        : 获取外存下载路径getExternalDcimPath             : 获取外存数码相机图片路径getExternalDocumentsPath        : 获取外存文档路径getExternalAppDataPath          : 获取外存应用数据路径getExternalAppCachePath         : 获取外存应用缓存路径getExternalAppFilesPath         : 获取外存应用文件路径getExternalAppMusicPath         : 获取外存应用音乐路径getExternalAppPodcastsPath      : 获取外存应用播客路径getExternalAppRingtonesPath     : 获取外存应用铃声路径getExternalAppAlarmsPath        : 获取外存应用闹铃路径getExternalAppNotificationsPath : 获取外存应用通知路径getExternalAppPicturesPath      : 获取外存应用图片路径getExternalAppMoviesPath        : 获取外存应用影片路径getExternalAppDownloadPath      : 获取外存应用下载路径getExternalAppDcimPath          : 获取外存应用数码相机图片路径getExternalAppDocumentsPath     : 获取外存应用文档路径getExternalAppObbPath           : 获取外存应用 OBB 路径