代碼地址
https://github.com/MuchContact/TreeViewForContactBook.git
1. 模型
聯(lián)系人列表組件關(guān)心的模型只有三個:
GroupRepository 模型入口稍计,獲取分組信息
Group 掌管每個組的內(nèi)部信息
ContactMember 聯(lián)系人裕循,屬于某一組
2. 原型
使用者只需要實現(xiàn)這三個接口净刮,下面代碼展示如何快速構(gòu)建一個原型:
GroupRepositoryImpl
public class GroupRepositoryImpl implements GroupRepository {
private List<Group> groups;
public GroupRepositoryImpl() {
this.groups = new ArrayList<>();
Group group1 = new GroupImpl("局領(lǐng)導(dǎo)");
group1.addMembers(new ContactMemberImpl("張良勖", "87463739"), new ContactMemberImpl("李存浩", "76353674"));
Group group2 = new GroupImpl("辦公室");
group2.addMembers(new ContactMemberImpl("張良勖", "87463739"), new ContactMemberImpl("李存浩", "76353674"));
groups.add(group1);
groups.add(group2);
}
@Override
public Group getGroup(int groupPosition) {
return groups.get(groupPosition);
}
@Override
public List<Group> getGroups() {
return groups;
}
}
GroupImpl
public class GroupImpl implements Group {
private final String name;
private List<ContactMember> members;
public GroupImpl(String groupName) {
this.name = groupName;
members = new ArrayList<>();
}
@Override
public String name() {
return name;
}
@Override
public ContactMember member(int index) {
return index < members.size() ? members.get(index) : null;
}
@Override
public void addMembers(ContactMember member, ContactMember... newMembers) {
members.add(member);
for (ContactMember mem : newMembers) {
members.add(mem);
}
}
@Override
public int memberCount() {
return members.size();
}
}
ContactMemberImpl
public class ContactMemberImpl implements ContactMember {
private final String name;
private final String phone;
public ContactMemberImpl(String name, String phone) {
this.name = name;
this.phone = phone;
}
@Override
public String name() {
return name;
}
@Override
public String phone() {
return phone;
}
}
調(diào)用示例
public class MainActivity extends Activity {
private TreeView treeView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
}
private void initView() {
treeView = (TreeView) findViewById(R.id.tree_view);
treeView.setHeaderView(getLayoutInflater().inflate(R.layout.list_head_view, treeView,
false));
GroupRepository groupRepository = new GroupRepositoryImpl();
treeView.setAdapter(new DefaultTreeViewAdapter(this, treeView, groupRepository));
}
}
原型效果
效果圖
3. 產(chǎn)品
未完待續(xù)