recyclerview没有返回所有项目

lh80um4z  于 2021-06-27  发布在  Java
关注(0)|答案(2)|浏览(309)

我正在制作我的第一个javaandroid应用程序,我对recyclerview有一些问题。
我有一个为每个元素定制布局的recyclerview。
当我按下工具栏按钮时,我想使recyclerview中每个布局元素中的图像按钮变为可见或不可见
这是工具栏编辑按钮代码:

ArrayList<View> dest=new ArrayList<View>();
            recView= findViewById(R.id.newListView);
            recView.setItemViewCacheSize(0);
            recView.findViewsWithText(dest,getString(R.string.onesingleuserlayout),View.FIND_VIEWS_WITH_CONTENT_DESCRIPTION);

            for (View oneUserLayout:dest)
            {
                oneUserLayout.findViewById(R.id.btnDelete).setVisibility(newVisibility);
                oneUserLayout.findViewById(R.id.btnEdit).setVisibility(newVisibility);
            }

它几乎隐藏了所有的元素,但不是每一个。显示的人行为正常,有时不显示的人行为不正常。

我认为这与缓存项有关。

2ic8powd

2ic8powd1#

删除此行以允许缓存:

recView.setItemViewCacheSize(0);

这里解释了它的工作原理(这也解释了为什么需要缓存)。

kgqe7b3p

kgqe7b3p2#

尝试改变你的方法,而不是从recyclerview外部调用所有那些findview方法,在适配器上实现一个方法,以更改表示按钮可见性的布尔变量,然后调用notifydatasetchanged以强制布局管理器重新绘制所有可见项,由于所有项都引用布尔变量,因此重新绘制新项时,它们将具有新的可见性。

相关问题