【问题标题】:How to design expandable listview with different childs如何设计具有不同孩子的可扩展列表视图
【发布时间】:2017-04-27 12:37:04
【问题描述】:

这就是我的屏幕的样子。我的问题是,我应该将用户对象传递给适配器并用用户对象字段填充这些字段。如果我用一个 TextView 创建子布局,我怎么知道要更新哪个字段?

创建 DetailsViewHolder、AddressViewHolder 等是否更好?或者我可以用 6 个 Edittexts 创建 details.xml?但我认为这不是一个好主意,对吧?

【问题讨论】:

    标签: android expandablelistview expandablelistadapter


    【解决方案1】:

    ListView 最适合可能随时间变化的长列表。对于您的情况,我根本不建议使用 ListView,而是使用简单的 LinearLayout。它更容易使用并且可以完美地完成工作。如果需要滚动,只需将 LinearLayout 包裹在 ScollView 中即可。

    【讨论】:

    • 嗯。您仍然可以使用 ExpandableListView,然后将每个行项目(例如:国家、城市等)添加为父项的子项。您不需要具有 6 个 EditTexts 的 details.xml。您可以将父级设为 {"Details", "Address", "Billing Address"},然后将“Details”的子级设为“First Name”、“Last Name”等}。我希望这很清楚。
    • 另外,您仍然可以使用 LinearLayout,只需通过动画点击标题元素即可展开/折叠子元素容器。
    • 是的,这些父母在可扩展列表视图中被称为组。我手动填写这些内容,组名及其字段(子项)...但是我如何知道要使用哪个用户对象字段更新哪些子项?如果你明白我在问什么?
    • 在getChildView()中,可以调用getChild(int groupPosition, int childPosition)获取数据填写。
    • 没有。你会做这样的事情: If (groupPosition == 0 && childPosition == 0) { edtText.setText(user.getFirstName()) ... } if (groupPosition == 0 && childPosition == 1) { edtText.setText (user.getLastName)};或者,您可以使用更简洁的 case-switch: switch(groupPosition)[ case 0: switch(childPosition)[ case 0 ... case 1 ....]; case1: switch(childPosition)[ case 0 ... case 1 ....];] 此外,您应该为父母使用常量,因为它们是固定的(即如果 groupPosition == POSITION_DETAIL 而不是 groupPosition == 0)。
    猜你喜欢
    • 2016-02-15
    • 1970-01-01
    • 2017-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多