我需要制作一个可展开的RecyclerView
,每次点击只打开一个项目(其他所有项目必须关闭)。
我知道有可能在ExpandableListView
的帮助下执行此操作,然后使用下一个代码:
elv.setOnGroupExpandListener(new OnGroupExpandListener() {
@Override
public void onGroupExpand(int groupPosition) {
if (lastExpandedPosition != -1
&& groupPosition != lastExpandedPosition) {
elv.collapseGroup(lastExpandedPosition);
}
lastExpandedPosition = groupPosition;
}
});
但有没有办法使用RecyclerView
?
答案 0 :(得分:3)
Here是一个很好的教程,用于从Big Nerd Ranch消费RecyclerView
要点:
setParentAndIconExpandOnClick(true)
。对于一次只有一个展开的视图,您可以跟踪上一个展开的视图,并在用户打开新视图时将其关闭。
答案 1 :(得分:1)
您不应该使用任何库进行此项使用this
您可以使用此notifyItemChanged(int)
执行此操作,而无需使用任何其他库
只要调用notifyItemChanged(int),只要有数据更改,它就可以使用动画。并添加
android:animateLayoutChanges="true"
到您的列表项目根
答案 2 :(得分:0)
你可以通过使用一些库来实现,我建议Advanced RecyclerView
答案 3 :(得分:0)
看看Advanced RecyclerView。 here是可扩展项的示例。
答案 4 :(得分:0)
如果使用可扩展的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) {
}
}
});