# 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