ExpandableListView - 如果每个父级只有一个子级

时间:2016-01-28 20:04:17

标签: android expandablelistview

我使用ExpandableListView在Activity中显示父子关系。这很好,但因为在我们的例子中,父母和孩子的信息是相似的,我希望能够在每个父母只有一个孩子的情况下隐藏父信息。

例如,在下面的屏幕截图中,我目前显示的3个产品每个都有一个孩子。因为大多数有用的信息对于部分(子)视图是足够的,所以我想隐藏父(产品)视图。

所以,当每个产品只有1个部分时,不要这样显示: enter image description here

,我想像这样显示它(没有父视图): enter image description here

使用ExpandableListView可以实现吗?

2 个答案:

答案 0 :(得分:1)

这是一种hacky方式,但您可以检查子计数是否为1,然后为GroupView的空视图充气。

我使用的是viewHolder模式,但适用于我的示例看起来像这样。

@Override
public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {
    ViewHolder viewHolder;

    if(convertView == null){
        viewHolder = new ViewHolder();

        if(getChildrenCount(groupPosition) == 1) {
            //INFLATE EMPTY VIEW
            convertView = LayoutInflater.from(context).inflate(R.layout.empty_view, parent, false);
        } else {
            //THE ACTUAL VIEW
            convertView = LayoutInflater.from(context).inflate(R.layout.actual_view, parent, false);
            viewHolder.displayName = (TextView) convertView.findViewById(R.id.displayName);
        }

        convertView.setTag(viewHolder);
    } else {
        viewHolder = (ViewHolder) convertView.getTag();
    }

    if(getChildrenCount(groupPosition) != 1) {
        viewHolder.name.setText("Name");
        listView.expandGroup(groupPosition);
    }


    return convertView;
}

empty_view.xml看起来像这样

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:orientation="vertical"
              android:layout_width="0dp"
              android:layout_height="0dp">

</LinearLayout>

答案 1 :(得分:0)

在我看来,使用回收站视图将更容易实现您的目标。这是一个很好的例子:https://www.bignerdranch.com/blog/expand-a-recyclerview-in-four-steps/