【问题标题】:Custom ExpandableListview Android自定义 ExpandableListview Android
【发布时间】:2015-07-24 06:34:28
【问题描述】:

有没有办法在 android 中创建一个像图像一样的可扩展视图?我尝试使用 Expandable ListView ,但没有达到要求。请提供这是否可以在android中完成?在此先感谢

【问题讨论】:

  • 我不明白你的问题,“创建一个像图像一样的可扩展视图?”你的意思是,我可以用 ExpandableListView 创建这个如图所示的 UI 吗?
  • 是的,我也在寻找。

标签: android expandablelistview


【解决方案1】:

我的回答是:不要使用可扩展列表适配器。

您的收藏看起来不像有子收藏(至少少于可滚动的数量)。您的行只是通过展开折叠来隐藏/显示数据的详细信息。

使用自定义 ListAdapter 并使每个项目展开并在单击按钮时显示详细信息(您可以通过谷歌搜索找到高度动画)。

希望对你有帮助。

【讨论】:

  • 如果上述情况有效,我相信这是一个完美的解决方案。
【解决方案2】:

您可以使用自定义 ExpandableListAdapter 来实现此目的。 你可以看看下面的点赞 How to write custom ExpandableListAdapter

【讨论】:

    【解决方案3】:

    我认为它更像是 RecyclerView。至少,我会在这种情况下使用它。主要原因是ViewHolder。当然你可以提供你自己的视图模式实现,但是RecyclerView 强制你使用ViewHolder 并提供存根。

    据我了解,您不需要处理点击整个元素,但您需要处理点击加/减按钮。因此,当您实现ViewHolder 时,只需为该视图添加点击侦听器并显示/隐藏内容,如下所示:

    class ChartViewHolder extends RecyclerView.ViewHolder {
        private TextView storeTitle;
        private ToggleButton toggleBtn;
        // other views
    
        public ViewHolder(View itemView) {
            super(itemView);
            storeTitle = (TextView) itemView.findViewById(R.id.title_id);
            toggleBtn = (ToggleButton) itemView.findViewById(R.id.toggle_id);
            // other views
    
            toggleBtn.setOnCheckedChangeListener(new OnCheckedChangeListener() {
                @Override
                public void onCheckedChanged(CompoundButton toggleButton, boolean isChecked) {
                    if(isChecked) {
                        // make content visible
                    } else {
                        // make conent invisible
                    }
                }
            });
        }
    }
    

    如果您需要动画来展开/折叠,您应该查看Property animations

    【讨论】:

      【解决方案4】:

      您可能应该创建一个扩展BaseExpandableListAdapter 的自定义ExpandableListAdapter。有很多教程。以 this 教程的第 15 部分为例。

      【讨论】:

        【解决方案5】:

        对于可扩展的列表视图,我必须使用下面的库,它对我来说就像魅力一样。

        https://github.com/bmelnychuk/AndroidTreeView

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-11-18
          • 1970-01-01
          • 2014-07-09
          • 1970-01-01
          • 2016-06-13
          相关资源
          最近更新 更多