【问题标题】:Loading a new ViewHolder based on click event根据点击事件加载新的 ViewHolder
【发布时间】:2016-07-20 22:55:41
【问题描述】:

在 RecyclerView 中,关于加载不同的 viewholder onitemclick 有什么技巧吗?当在该位置的查看器 1 中单击项目时,我无法将头绕在加载查看器 2 上。 viewholder 1 和 2 都是卡片列表。举例来说。 vh1 包含示例酒店图像。当您点击 vh2 时,您会看到该酒店的详细联系信息 - 在该位置,同时保留 vh1 到其他未点击的内容。

我之前确实问过这样的问题,但我认为它有点含糊,所以人们建议我根据点击项目更改信息。问题是 vh1 和 2 是完全不同的布局,所以这对我正在处理的工作不起作用。

这甚至可能吗? 谢谢

【问题讨论】:

  • 这可以通过某种方式完成。你有任何代码你已经开始工作了吗?
  • 我愿意,但它主要是按照这个链接来设置两个视图。 Link To Codepath guide, 然后实现了 onclicklistener 和一个布尔值以切换视图。到目前为止,我点击了任何卡片 = 整个列表更改。还不知道如何根据位置进行更改。

标签: android android-layout android-recyclerview


【解决方案1】:

您可以为您的RecyclerView 创建另一个适配器。创建一个新的 Java 类,随意调用它。在您的主要活动中,或者您正在设置适配器的活动中,您可以创建如下函数:

public void setNewAdapter() {
    RecyclerView recyclerView = (RecyclerView) findViewById(R.id.your_recyclerview_id);
    LinearLayoutManager layoutManager = new LinearLayoutManager(this);
    NewAdapter adapter = new NewAdapter(// any arguments);

    recyclerView.setHasFixedSize(true);
    recyclerView.setLayoutManager(layoutManager);
    recyclerView.setAdapter(adapter);
}

在您的适配器中,您可以创建一个新的活动实例。例如,如果您的活动名为MainActivity,则可以将此代码添加到您的onItemClick

MainActivity mainActivity = new MainActivity();
mainActivity.setNewAdapter();

看看这是否有效。

【讨论】:

  • 嗨剃刀。谢谢回复。这不起作用,因为它会用新项目重新加载整个列表。我基本上需要的是在用户点击时在特定位置加载不同的视图。所以例如。用户单击卡 A 并且 cad b 加载到该特定位置,而布局的其余部分保留相同的元素。几乎就像那些点击时会展开的卡片一样。在这种情况下,尝试更进一步并加载视图,同时为列表的其余部分保留状态。我正在尝试一些动画方面的建议。如果它有效,请告诉你:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-18
  • 1970-01-01
  • 1970-01-01
  • 2017-03-12
相关资源
最近更新 更多