RecyclerView:切换所有可见行的子项的可见性
RecyclerView: toggling visibility of a children of all visible rows
我有一个水平 RecyclerView。
我想做的是,在运行时从适配器中隐藏所有项目的 2 个 TextView。
所以,我想做的是循环遍历所有可见项,获取它们的布局,然后更改每个子项中某些 TextView 的可见性。
您可以将其视为 "simple layout" 与 "Complex layout" 的切换。
我知道我应该通过分配的 RecyclerView.Adapter 检索 RecyclerView 子级,但这真的是最好的解决方案吗?
非常感谢您的帮助。
我的代码:
public ViewHolder(View v) {
super(v);
// Some logic here to find children
v.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// Get the adapter here, loop all visible children, and change visibility?
// Following line will do for clicked item only:
tvwind.setVisibility(tvwind.getVisibility()==View.VISIBLE?View.GONE:View.VISIBLE);
}
});
}
从上面的代码,我可以改变点击项目的可见性,但不是所有可见的项目。
如前所述,这可以通过在适配器的 onBindViewHolder() 内部切换可见性来实现。
我有一个水平 RecyclerView。 我想做的是,在运行时从适配器中隐藏所有项目的 2 个 TextView。
所以,我想做的是循环遍历所有可见项,获取它们的布局,然后更改每个子项中某些 TextView 的可见性。
您可以将其视为 "simple layout" 与 "Complex layout" 的切换。
我知道我应该通过分配的 RecyclerView.Adapter 检索 RecyclerView 子级,但这真的是最好的解决方案吗?
非常感谢您的帮助。
我的代码:
public ViewHolder(View v) {
super(v);
// Some logic here to find children
v.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// Get the adapter here, loop all visible children, and change visibility?
// Following line will do for clicked item only:
tvwind.setVisibility(tvwind.getVisibility()==View.VISIBLE?View.GONE:View.VISIBLE);
}
});
}
从上面的代码,我可以改变点击项目的可见性,但不是所有可见的项目。
如前所述,这可以通过在适配器的 onBindViewHolder() 内部切换可见性来实现。