赞
踩
通讯录demo主要分为联系人界面、设置紧急联系人、服务卡片3个模块,分为Java和JS两个版本,本篇主要讲解用尽可能的用Java去实现。
感兴趣的小伙伴,可以自己根据原型效果自己尝试着去实现【通讯录demo简易原型】
通过学习与练习本demo,可以延伸至以下场景
《HarmonyOS 项目实战之通讯录Demo(JS)》
《HarmonyOS 项目实战之通讯录(Java)》
《HarmonyOS 项目实战之新闻头条(ArkUI-TS》
2.1.1 实现效果
2.1.2 核心代码
参考:ListContainer-常用组件开发指导-Java UI框架-UI-开发-HarmonyOS应用开发
ContactData categoryData = ContactData.get(); categoryData.sortContactData(); contactList = (ListContainer) findComponentById(ResourceTable.Id_contactList); Text headerText = (Text) findComponentById(ResourceTable.Id_sticky_text); List<ContactBean> dataList = categoryData.getResultList(); mStickyContactProvider = new StickyContactProvider(this, dataList); contactList.setItemProvider(mStickyContactProvider); HeaderDecor headerDecor = new HeaderDecor(contactList, headerText);
sortContactData方法数据处理,排序,字母索引:
public void sortContactData() { List<ContactBean> mContactList = new ArrayList<>(); Map<String, String> map = new HashMap<>(); for (ContactBean contactBean : mContactBeans) { String pinyin = Utils.getPingYin(contactBean.getName()); map.put(pinyin, contactBean.getName()); contactBean.setNamepy(pinyin); mContactList.add(contactBean); } mContactList.sort(new ContactComparator()); characterList = new ArrayList<>(); resultList = new ArrayList<>(); for (ContactBean contactBean : mContactList) { String namepy = contactBean.getNamepy(); String character = (namepy.charAt(0) + "").toUpperCase(Locale.ENGLISH); if (!characterList.contains(character)) { if (character.hashCode() >= "A".hashCode() && character.hashCode() <= "Z".hashCode()) { // 是字母 characterList.add(character); resultList.add(new ContactBean(character, ContactBean.ITEM_TYPE.ITEM_TYPE_CHARACTER.ordinal())); } else { if (!characterList.contains("#")) { characterList.add("#"); resultList.add(new ContactBean("#", ContactBean.ITEM_TYPE.ITEM_TYPE_CHARACTER.ordinal())); } } } resultList.add(new ContactBean(contactBean.getName(), contactBean.getTelephone(), map.get(namepy), ContactBean.ITEM_TYPE.ITEM_TYPE_CONTACT.ordinal())); } }
2.2.1 实现效果
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。