需要将RecyclerView中点击的项的id传递给第二个RecyclerView。

5 浏览
0 Comments

需要将RecyclerView中点击的项的id传递给第二个RecyclerView。

我正在开发一个Android应用程序。\n有一个包含两个独立的recyclerview的活动。\n第一个recyclerview是水平的,有自己的适配器。\n第二个recyclerview是垂直的,也有自己的适配器。\n当活动第一次启动时,两个recyclerview都显示各自来源的所有项目。\n但是后来我需要根据第一个recyclerview中选定的项目来过滤要在第二个recyclerview上显示的项目。\n在第一个适配器中,当点击一个项目时,我会获取其id,我可以使用该id来过滤第二个recyclerview中的项目。\n如何在不重新加载活动的情况下将第一个recyclerview点击的项目的id传递给第二个recyclerview是最好的方法?

0
0 Comments

问题的出现原因是需要将第一个RecyclerView点击的项的id传递给第二个RecyclerView,然后根据这个id进行网络操作或正常操作来获取所需的列表,并将列表传递给第二个适配器进行设置。解决方法是在第一个RecyclerView的点击事件中,将对应的id或信息传递给一个方法(例如setSecondRV(id OR information)),在这个方法中进行网络操作或正常操作来获取所需的列表,然后将列表传递给第二个适配器进行设置。最后别忘了通知第二个适配器进行数据更新(secondAdapter.notifyDataSetChanged())。

在给出的新闻应用程序链接中(NewsUltimate),可以看到第一个RecyclerView的点击事件处理方法中进行了网络操作来获取第二个RecyclerView所需的列表。但是,网络操作也可以在Activity中进行。

0
0 Comments

问题的原因是需要将RecyclerView中点击的项的id传递给第二个RecyclerView,但是这个操作需要在Activity中执行,而不是在适配器中执行。

解决方法是在Activity中创建一个方法来加载过滤后的第二个适配器的项,并在适配器的点击事件中调用该方法。

具体实现如下:

首先,在Activity中创建一个方法来加载第二个适配器的过滤项:

public void loadFilteredItems(int itemId) {
    // 根据itemId执行加载过滤项的操作
    // 更新第二个适配器的数据
    secondAdapter = new SecondAdapter(filteredItems);
    // 将第二个适配器设置给第二个RecyclerView
    secondRecyclerView.setAdapter(secondAdapter);
}

然后,在适配器的点击事件中调用该方法,并传递点击项的id:

class MenuClickListener implements PopupMenu.OnMenuItemClickListener {
    Integer pos;
    public MenuClickListener(int pos) {
        this.pos = pos;
    }
    public boolean onMenuItemClick(MenuItem menuItem) {
        switch (menuItem.getItemId()) {
            case R.id.action_favourite:
                String positi = marcaList.get(pos).getnombre();
                Integer positid = marcaList.get(pos).getId();
                // 调用Activity中的方法来加载过滤项
                ((YourActivityName) context).loadFilteredItems(positid);
                return true;
            default:
        }
        return false;
    }
}

这样,当在第一个RecyclerView的适配器中点击某一项的时候,会调用Activity中的方法来加载第二个适配器的过滤项,并更新第二个RecyclerView的数据。

0