【问题标题】:Create CardView with dynamic custom list inside使用内部的动态自定义列表创建 CardView
【发布时间】:2015-09-21 01:45:12
【问题描述】:

我在我的应用程序中创建了一个带有 CardViews 的 RecyclerView。现在我想在每个 CardView 中添加一个新的自定义视图列表,具有自定义布局(参见示例图像)。当按下添加按钮时,卡片内应该会插入此布局的新行。

我如何意识到这一点?在我读到的互联网上,CardView 中的 ListView 是不可能的,因为 ListView 是可滚动的,并且活动上不应该有两个可滚动的视图(这就是我发现的......)

红色标记的行是自定义行。

对于 RecyclerView,我使用了 ViewHolder、CustomAdapter 等。 我需要这个用于里面的行吗?还是有更简单的方法?

【问题讨论】:

  • “CardView 内的 ListView 是不可能的,因为 ListView 是可滚动的”。这是不正确的。您可能的意思是,在另一个可滚动视图中拥有可滚动视图(ListView、RecyclerView)是不可能的。这也是不正确的,你可以拥有它们,但是你需要编写代码来禁用/委托滚动到两者之一,因为你不能让它们同时滚动。如果您从不想滚动项目的内部“列表”(您的内部列表视图),我建议您将它们包装在 中并以编程方式添加它们......
  • [cont] 否则,添加第二个(内部)RecyclerView,然后阅读如何禁用内部 Recyclerview(或 ListView 或您选择的任何容器)内的滚动。

标签: android list android-custom-view android-recyclerview android-cardview


【解决方案1】:

我要做的是将点击处理程序附加到Views 是您的ViewHolder。在此事件处理程序中,您可以委托给某种演示者,该演示者将添加/删除/编辑持卡人中的View

 private class MyHolder extends ViewHolder 
        implements View.OnClickListener {
    ...

    public MyHolder(View itemView, MyPresenter presenter) {
        super(itemView);
        itemView.setOnClickListener(this);

        ...
    }

    @Override
    public void onClick(View v) {
        presenter.addRow(v);
    }
}

【讨论】:

  • Presenter Class 听起来很有趣。从来没有听说过。我试试看
  • @Surras 您还可以将视图 id 附加到视图持有者对象,以便演示者可以从模型、数据库等获取内容。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-15
  • 1970-01-01
  • 1970-01-01
  • 2015-05-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多