代码拉取完成,页面将自动刷新
本项目是基于开源项目SectionedRecyclerViewAdapter进行ohos化的移植和开发的,可以通过项目标签以及github地址(https://github.com/luizgrp/SectionedRecyclerViewAdapter )追踪到原项目版本
方法1.
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar', '*.har'])
……
}
方法2.
repositories {
maven {
url 'http://106.15.92.248:8081/repository/Releases/'
}
}
dependencies {
Implementation 'com.github.luizgrp.ohos:SectionedRecyclerViewAdapter:1.0.1'
}
final class ContactsSection extends Section {
private final String title;
private final List<Contact> list;
private final ClickListener clickListener;
private final Context context;
ContactsSection(Context context, final String title, final List<Contact> list,
final ClickListener clickListener) {
super(SectionParameters.builder()
.itemResourceId(ResourceTable.Layout_section_ex1_item)
.headerResourceId(ResourceTable.Layout_section_ex1_header)
.build());
this.context = context;
this.title = title;
this.list = list;
this.clickListener = clickListener;
}
@Override
public int getContentItemsTotal() {
return list.size();
}
@Override
public ViewHolder getItemViewHolder(final Component component) {
return new ItemViewHolder(component);
}
@Override
public void onBindItemViewHolder(ViewHolder holder, int position) {
final ItemViewHolder itemHolder = (ItemViewHolder) holder;
final Contact contact = list.get(position);
itemHolder.tvItem.setText(contact.name);
VectorElement element = new VectorElement(context, contact.profileImage);
itemHolder.imgItem.setImageElement(element);
itemHolder.root.setClickedListener(v ->
clickListener.onItemRootViewClicked(this, position)
);
}
@Override
public ViewHolder getHeaderViewHolder(final Component component) {
ViewHolder viewHolder = null;
try {
viewHolder = new HeaderViewHolder(component);
} catch (Exception e) {
System.out.println("ContactsSection getHeaderViewHolder Exception " + e.getMessage());
}
return viewHolder;
}
@Override
public void onBindHeaderViewHolder(final ViewHolder holder) {
final HeaderViewHolder headerHolder = (HeaderViewHolder) holder;
headerHolder.tvTitle.setText(title);
}
interface ClickListener {
void onItemRootViewClicked(final ContactsSection section, final int position);
}
}
final class ItemViewHolder extends RecyclerAdapter.ViewHolder {
final Component root;
final Image imgItem;
final Text tvItem;
public ItemViewHolder(Component component) {
super(component);
root = component;
imgItem = (Image) component.findComponentById(ResourceTable.Id_imgItem);
tvItem = (Text) component.findComponentById(ResourceTable.Id_tvItem);
}
}
public void onStart(Intent intent) {
super.onStart(intent);
super.setUIContent(ResourceTable.Layout_fragment_ex1);
sectionedAdapter = new SectionedRecyclerViewAdapter(this);
final Map<String, List<Contact>> contactsMap = new LoadContactsUseCase().execute(this);
for (final Map.Entry<String, List<Contact>> entry : contactsMap.entrySet()) {
if (entry.getValue().size() > 0) {
sectionedAdapter.addSection(new ContactsSection(this, entry.getKey(), entry.getValue(), this));
}
}
ListContainer listContainer = (ListContainer) findComponentById(ResourceTable.Id_recyclerview);
listContainer.setLayoutManager(new DirectionalLayoutManager());
listContainer.setItemProvider(sectionedAdapter);
}
MIT License (MIT)
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。