【问题标题】:Remove view from MergeAdapter从 MergeAdapter 中删除视图
【发布时间】:2011-10-19 20:19:12
【问题描述】:

是否可以以某种方式从MergeAdapter 中删除视图或适配器?我会尝试扩展它并从pieces 中删除视图,但它是private。或者也许有另一种解决方案可以在此适配器中显示/隐藏视图?我尝试将其layout_height 设置为零并将可见性设置为View.GONE,但它仍然显示空列表项。提前致谢。

【问题讨论】:

    标签: android commonsware-cwac


    【解决方案1】:

    你的 MergeAdapter 应该有一个名为 getCount().. 如果我理解你的方法,从那里返回零可能会解决你的问题..

    【讨论】:

    • 嗨,ntc,我假设在getCount() 中返回零将隐藏所有视图,但我需要隐藏特定的视图。例如,我添加了 2 个视图、2 个适配器,然后又添加了 2 个视图,现在我想删除/隐藏第 2 个视图。
    • 那么在 getView() 方法上,您将获得所请求视图的位置。在所需位置,您可以将其可见性设置为消失。如果您可以发布一些代码,我们可能会更清楚你的目的,..
    • 虽然在getView() 上设置视图的可见性不会隐藏列表项,但我会尽量不附加覆盖此方法的视图,所以感谢您的提示。跨度>
    • 最终以ListView.LayoutParamswidth 0 in getView() 返回新视图。如果MergeAdapter的作者不回复,我会接受你的回答。再次感谢。
    【解决方案2】:

    是否可以以某种方式从 MergeAdapter 中删除视图或适配器?

    暂时没有,抱歉。如果您想试一试,添加(将其从集合中删除并调用notifyDataSetChanged() 以更新AdapterView)应该不会太难。欢迎投稿! :-)

    【讨论】:

      【解决方案3】:

      扩展 Mark Murphy 的回答,我认为这就像将这个方法添加到 MergeAdapter 一样简单:

      public void removeAdapter(ListAdapter la) {
          pieces.remove(la);
        }
      

      remove() 接受一个对象,如果该对象包含在片段列表中,它将为您进行所有必要的测试和删除。您可以根据自己的目的将此返回一个布尔值或其他东西,但我没有这样的需要。

      然后只需调用类似:

      int view_to_remove = *AN_INT*
      adapter.removeAdapter(listAdapter.getAdapter(view_to_remove));
      adapter.notifyDataSetChanged();
      

      【讨论】:

      • 如果我没记错的话,pieces 在 MergeAdapter 中有私有访问权限,所以我需要修改它的来源。我对 GitHub 和那里的贡献不太熟悉,所以我最终找到了一些解决方法。不过谢谢你的建议。
      【解决方案4】:

      要从MergeAdapter 中删除视图或适配器,请使用以下方法:

      setActive() 在您的 mergeAdapter 实例上。

      例如: 要从 MergeAdapter(merAdapter) 中删除 Textview (mytextView),请使用:

      merAdapter.setActive(mytextViiew,false);
      

      并再次启用它(使其可见)使用:

      merAdapter.setActive(mytextViiew,true);
      

      详情请参阅MergeAdapter 文档:

      https://github.com/commonsguy/cwac-merge

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-01-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-07-13
        • 1970-01-01
        相关资源
        最近更新 更多