同步操作将从 ISRC_OHOS/AStickyHeader_ohos 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
项目名称:AStickyHeader_ohos
所属系列:鸿蒙的第三方组件适配移植
功能:支持ListContainer的分组效果,支持给每一个分组添加标题,不支持分组标题栏滑动时置顶效果
调用差异:由于harmonyos缺少dispatchdraw的对应方法,导致不能实现置顶效果
开发版本:sdk5,DevEco Studio2.1 beta3
项目作者和维护人:刘磊
原项目Doc地址:https://github.com/DWorkS/AStickyHeader
编程语言:Java
外部库依赖:org.jar
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar', '*.har'])
……
}
在导入的jar包上点击右键,选择“Add as Library”对包进行引用,选择需要引用的模块,并点击“OK”即引用成功。
1.需要用到的主要资源
//定义列表
private ListContainer list;
//定义图像适配器
private ImageAdapter mAdapter;
//定义标题列表
private ArrayList<SimpleSectionedListAdapter.Section> sections = new ArrayList<SimpleSectionedListAdapter.Section>();
//图像资源id
private Integer[] mImageIds = {
ResourceTable.Media_cat1, ResourceTable.Media_cat2, ResourceTable.Media_cat3, ResourceTable.Media_cat4, ResourceTable.Media_cat5, ResourceTable.Media_cat6, ResourceTable.Media_cat7, ResourceTable.Media_cat8, ResourceTable.Media_cat9, ResourceTable.Media_cat10,
ResourceTable.Media_cat11, ResourceTable.Media_cat12, ResourceTable.Media_cat13, ResourceTable.Media_cat14, ResourceTable.Media_cat15, ResourceTable.Media_cat16, ResourceTable.Media_cat17, ResourceTable.Media_cat18, ResourceTable.Media_cat19, ResourceTable.Media_cat20,
ResourceTable.Media_cat21, ResourceTable.Media_cat22, ResourceTable.Media_cat23, ResourceTable.Media_cat24, ResourceTable.Media_cat25, ResourceTable.Media_cat26, ResourceTable.Media_cat27, ResourceTable.Media_cat28, ResourceTable.Media_cat29, ResourceTable.Media_cat30,
ResourceTable.Media_cat31, ResourceTable.Media_cat32, ResourceTable.Media_cat33, ResourceTable.Media_cat34, ResourceTable.Media_cat35, ResourceTable.Media_cat36, ResourceTable.Media_cat37, ResourceTable.Media_cat38, ResourceTable.Media_cat39, ResourceTable.Media_cat40,
ResourceTable.Media_cat41, ResourceTable.Media_cat42, ResourceTable.Media_cat43, ResourceTable.Media_cat44, ResourceTable.Media_cat45, ResourceTable.Media_cat46, ResourceTable.Media_cat47, ResourceTable.Media_cat48, ResourceTable.Media_cat49, ResourceTable.Media_cat50,
ResourceTable.Media_cat51, ResourceTable.Media_cat52, ResourceTable.Media_cat53, ResourceTable.Media_cat54, ResourceTable.Media_cat55, ResourceTable.Media_cat56, ResourceTable.Media_cat57, ResourceTable.Media_cat58, ResourceTable.Media_cat59, ResourceTable.Media_cat60,
ResourceTable.Media_cat61, ResourceTable.Media_cat62, ResourceTable.Media_cat63, ResourceTable.Media_cat64, ResourceTable.Media_cat65, ResourceTable.Media_cat66, ResourceTable.Media_cat67, ResourceTable.Media_cat68, ResourceTable.Media_cat69, ResourceTable.Media_cat70,
ResourceTable.Media_cat71, ResourceTable.Media_cat72, ResourceTable.Media_cat73, ResourceTable.Media_cat74, ResourceTable.Media_cat75, ResourceTable.Media_cat76, ResourceTable.Media_cat77, ResourceTable.Media_cat78, ResourceTable.Media_cat79, ResourceTable.Media_cat80,
ResourceTable.Media_cat81, ResourceTable.Media_cat82, ResourceTable.Media_cat83, ResourceTable.Media_cat84, ResourceTable.Media_cat85, ResourceTable.Media_cat86, ResourceTable.Media_cat87, ResourceTable.Media_cat88, ResourceTable.Media_cat89, ResourceTable.Media_cat90,
ResourceTable.Media_cat91, ResourceTable.Media_cat92, ResourceTable.Media_cat93, ResourceTable.Media_cat94, ResourceTable.Media_cat95, ResourceTable.Media_cat96, ResourceTable.Media_cat97, ResourceTable.Media_cat98, ResourceTable.Media_cat99, ResourceTable.Media_cat100,
};
//标题名字
private String[] mHeaderNames = { "Cute Cats", "Few Cats", "Some Cats", "Some More Cats", "Some More More Cats", "Many Cats", "Many Many Cats", "So Many Cats" };
//标题位置
private Integer[] mHeaderPositions = { 0, 6, 11, 37, 38, 60, 77, 89 };
2.自定义的列表项
private class ImageAdapter extends RecycleItemProvider{
private LayoutScatter mInflater;
public ImageAdapter(Context context) {
mInflater = getInstance(context);
}
@Override
public int getCount() {
return mImageIds.length;
}
@Override
public Object getItem(int position) {
return null;
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public Component getComponent(int i, Component component, ComponentContainer componentContainer) {
Text name = null;
Image image = null;
if(component==null){
//解析Layout_item_layout布局
component = mInflater.parse(ResourceTable.Layout_item_layout,componentContainer,false);
image = ((Image)component.findComponentById(ResourceTable.Id_item_image));
image.setPixelMap(mImageIds[i]);
name = ((Text)component.findComponentById(ResourceTable.Id_name));
name.setText("A Cute Cat"+(i+1));
}
return component;
}
}
3.布局及初始化
3.1xml布局
主页面布局:main_layout.xml
<?xml version="1.0" encoding="utf-8"?>
<DirectionalLayout xmlns:ohos="http://schemas.huawei.com/res/ohos"
ohos:width="match_parent"
ohos:height="match_parent"
ohos:orientation="vertical">
<dev.dworks.libs.astickyheader.ui.PinnedSectionListView
ohos:id="$+id:list"
ohos:width="match_parent"
ohos:weight="2"
ohos:height="0vp"
ohos:focusable_in_touch="true"/>
</DirectionalLayout>
数据项布局:item_laypout.xml
<?xml version="1.0" encoding="utf-8"?>
<DirectionalLayout xmlns:ohos="http://schemas.huawei.com/res/ohos"
ohos:width="match_parent"
ohos:orientation="horizontal"
ohos:height="65vp"
>
<dev.dworks.libs.astickyheader.ui.SquareImageView
ohos:id="$+id:item_image"
ohos:width="65vp"
ohos:height="65vp"
ohos:scale_mode="clip_center"
ohos:image_src="$media:empty_photo" />
<Text
ohos:id="$+id:name"
ohos:width="match_content"
ohos:height="match_content"
ohos:layout_alignment="vertical_center"
ohos:text="A Cute Cat"
ohos:text_size="60px"
ohos:margin="10vp"
ohos:text_color="$color:textColor"/>
</DirectionalLayout>
标题布局:list_item_header.xml
<?xml version="1.0" encoding="utf-8"?>
<StackLayout xmlns:ohos="http://schemas.huawei.com/res/ohos"
ohos:id="$+id:header_layout"
ohos:width="match_parent"
ohos:height="21vp" >
<Text
ohos:id="$+id:header"
ohos:width="match_parent"
ohos:height="21vp"
ohos:margin="0"
ohos:text="Hello"
ohos:text_size="21px"
ohos:layout_alignment="vertical_center"
ohos:text_color="$color:textColor"/>
</StackLayout>
3.2 代码中使用布局并初始化
super.setUIContent(ResourceTable.Layout_main_layout);
//从xml中获取ListContainer
list = (ListContainer) findComponentById(ResourceTable.Id_list);
//新建适配器
mAdapter = new ImageAdapter(MainAbilitySlice.this);
//把标题与位置放到标题列表中
for (int i = 0; i < mHeaderPositions.length; i++) {
sections.add(new SimpleSectionedListAdapter.Section(mHeaderPositions[i], mHeaderNames[i]));
}
//新建并初始化标题列表适配器
SimpleSectionedListAdapter simpleSectionedListAdapter = new SimpleSectionedListAdapter(MainAbilitySlice.this, mAdapter,
ResourceTable.Layout_list_item_header, ResourceTable.Id_header);
//设置Sections
simpleSectionedListAdapter.setSections(sections.toArray(new SimpleSectionedListAdapter.Section[0]));
//ListContainer设置列表项
list.setItemProvider(simpleSectionedListAdapter);
版本迭代
v0.1.0-alpha
版权和许可信息
AStickyHeader_ohos经过Apache License, version 2.0授权许可.
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。