可扩展项的RecyclerView

3
我需要创建一个可扩展的RecyclerView,每次只能打开一个项目(其他所有项目必须关闭)。 我知道可以使用ExpandableListView实现这一点,然后使用以下代码:
elv.setOnGroupExpandListener(new OnGroupExpandListener() {

    @Override
    public void onGroupExpand(int groupPosition) {
            if (lastExpandedPosition != -1
                    && groupPosition != lastExpandedPosition) {
                elv.collapseGroup(lastExpandedPosition);
            }
            lastExpandedPosition = groupPosition;
    }
});

但是有没有使用RecyclerView来实现相同功能的方法呢?


我认为这可能会对你有所帮助https://dev59.com/UF8d5IYBdhLWcg3wzU2r https://dev59.com/aF4d5IYBdhLWcg3wE_KP - Mauricio Flores
4个回答

3

这里有一篇很好的教程,讲解如何扩展RecyclerView,来自Big Nerd Ranch

概要:

  • 定义两个布局:一个用于父项,一个用于子项。
  • 为这些布局定义两个ViewHolders。
  • 为父对象和子对象定义两个类。
  • 父对象必须实现ParentObject接口。
  • 定义自定义适配器。
  • 在适配器上调用setParentAndIconExpandOnClick(true)

如果只允许同时展开一个视图,可以跟踪最后一个展开的视图,并在用户单击新视图时关闭它。


它只是链接到BigNerdRanch,而不是教程。但你可能会添加相同的链接。 - Marko
抱歉,我忘记添加实际链接了 :) - Olcay Ertaş
你比我快。我没注意到你的回答 :) - Olcay Ertaş
谢谢,但是有没有一种方法可以在打开一个项目时关闭所有其他项目? - Stan Malcolm
没有默认的方法。当点击新对象时,您必须保持已展开对象的列表并关闭先前的对象。 - Olcay Ertaş
这是一种轻松跟踪和实现每次点击只打开一个项目的方法。 https://dev59.com/DI_ea4cB1Zd3GeqPLj2E#40698779 - Rahul

0

0

0

如果使用Big Nerd Ranch的可展开RecyclerView表单,这里是跟踪和实现每次点击仅打开一个项目的方法-

      Stack<Integer> mStack = new Stack<>();

     mRecyclerViewAdapter.setExpandCollapseListener(new ExpandableRecyclerAdapter.ExpandCollapseListener() {
                @Override
                public void onListItemExpanded(int position) {


                    try {
                        int x = mStack.pop();
                        mRecyclerViewAdapter.collapseParent(x);

                    } catch (EmptyStackException ex) {
                    }

                    mStack.push(position);


                }

                @Override
                public void onListItemCollapsed(int position) {

                    try {
                        mStack.pop();
                    } catch (EmptyStackException ex) {
                    }

                }
            });

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接