# baseAdapter **Repository Path**: hihopeorg/baseAdapter ## Basic Information - **Project Name**: baseAdapter - **Description**: No description available - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-02-27 - **Last Updated**: 2024-10-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # baseAdapter **本项目是基于开源项目 base-adapter 进行ohos化的移植和开发的,可以通过项目标签以及github地址(https://github.com/hongyangAndroid/baseAdapter )追踪到原项目版本** #### 项目介绍 - 项目名称:baseAdapter - 所属系列:ohos的第三方组件适配移植 - 功能:为listContainer提供万能的Provider,支持多种item类型 - 项目作者和维护人:hihope - 联系方式:hihope@hoperun.com - 无原项目基线版本 - 调用差异:无 - 原项目Doc地址:https://github.com/hongyangAndroid/baseAdapter - 编程语言:Java 本项目为针对listContainer封装好的万能BaseItemProvider 支持多种多种item类型 #### 效果演示 #### 安装教程 方法1. 1. 将本三方库的har下载。 2. 启动 DevEco Studio,将下载的har包,导入工程目录“entry->libs”下。 3. 在entry级别下的build.gradle文件中添加依赖,在dependences标签中增加对libs目录下har包的引用。 ``` dependencies { implementation fileTree(dir: 'libs', include: ['*.jar', '*.har']) …… } ``` 方法2. 1. 在工程的build.gradle的allprojects中,添加HAR所在的Maven仓地址 ``` repositories { maven { url 'http://106.15.92.248:8081/repository/Releases/' } } ``` 2. 在应用模块的build.gradle的dependencies闭包中,添加如下代码: ``` dependencies { implementation 'com.zhy.ohos:base-adapter:1.0.1' } ``` #### 使用说明 1.使用最多的四个主要功能类: - MultiItemTypeProvider - 支持多item类型的BaseItemProvider - ItemComponentDelegate - listContainer中子项布局文件信息设置类 - CommonProvider - 普通单一类型的的BaseItemProvider - SampleItemProvider - 支持String类型数据的gridView显示和headerView显示的BaseItemProvider 2.使用实例 2.1 CommonProvider使用示例 ``` mListContainer.setItemProvider(new CommonProvider(this, ResourceTable.Layout_item_list, mDatas) { @Override public void convert(ViewHolder holder, String o, int pos) { holder.setText(ResourceTable.Id_id_item_list_title, o); } @Override public void onComponentHolderCreated(ViewHolder holder, Component itemComponent) { super.onComponentHolderCreated(holder, itemComponent); } }); ``` 2.2 MultiItemTypeProvider使用示例 定义子项信息类ChatMessage 定义MsgComingItemDelegate和MsgSendItemDelegate继承ItemComponentDelegate,复写子项信息管理等信息 ``` public class MsgComingItemDelegate implements ItemComponentDelegate { @Override public int getItemComponentLayoutId() { return ResourceTable.Layout_main_chat_from_msg; } @Override public boolean isForComponentType(ChatMessage item, int position) { return item.isComMeg(); } @Override public void convert(ViewHolder holder, ChatMessage chatMessage, int position) { holder.setText(ResourceTable.Id_chat_from_content, chatMessage.getContent()); holder.setText(ResourceTable.Id_chat_from_name, chatMessage.getName()); holder.setImagePixelMap(ResourceTable.Id_chat_from_icon, chatMessage.getIcon()); } } public class MsgSendItemDelegate implements ItemComponentDelegate { @Override public int getItemComponentLayoutId() { return ResourceTable.Layout_main_chat_send_msg; } @Override public boolean isForComponentType(ChatMessage item, int position) { return !item.isComMeg(); } @Override public void convert(ViewHolder holder, ChatMessage chatMessage, int position) { holder.setText(ResourceTable.Id_chat_send_content, chatMessage.getContent()); holder.setText(ResourceTable.Id_chat_send_name, chatMessage.getName()); holder.setImagePixelMap(ResourceTable.Id_chat_send_icon, chatMessage.getIcon()); } } ``` ChatProvider定义继承MultiItemTypeProvider,将子项代理器注册 ``` public class ChatProvider extends MultiItemTypeProvider { public ChatProvider(Context context, List datas) { super(context, datas); addItemComponentDelegate(new MsgSendItemDelegate()); addItemComponentDelegate(new MsgComingItemDelegate()); } } ``` 将ChatProvider初始化和设置数据源并绑定给ListContainer ``` mListContainer.setItemProvider(new ChatProvider(this, ChatMessage.MOCK_DATAS)); ``` 2.3 SampleItemProvider使用示例 初始化SampleItemProvider,设置List数据源,Context,gridView形式显示的列数 ``` mSampleItemProvider = new SampleItemProvider(mDatas, this, COLUMN); ``` 初始化子项的宽度, ``` mSampleItemProvider.setItemWidth(mListContainer.getWidth()); ``` 添加headerView显示String数据 ``` mSampleItemProvider.addHeaderString("Header1"); mSampleItemProvider.addHeaderString("Header2"); ``` 绑定给ListContainer ``` mListContainer.setItemProvider(mSampleItemProvider); ``` #### 版本迭代 - v1.0.1 #### 版权和许可信息 - Apache Licence2.0