在设置ViewView.Gone的可见性后,按钮/视图仍显示在ListView中

时间:2013-03-22 09:14:52

标签: android listview listadapter

我有ListView,显示要购买的不同商品。如果用户选择了某个项目,那么我将“Buy”和“Add”按钮设置为可见。当用户点击任何其他项目时,之前选择的“Visibility和”Buy“的Add设置为Gone,同时我设置Visibility已将Button的所选列表项再次发送到Visible

但是,当我滚动listview 2-3次时,首先选择的列表项不会隐藏(将可见性设置为Gone)“Buy”和“Add”{{ 1}}秒。它与回收视图有关吗?我将在这里显示代码:

Button

我在ButtonVisibilityFunction(View v) { if(mBuyButton!=null && mAddButton !=null) { mBuyButton.setVisibility(View.Gone); mAddButton .setVisibility(View.Gone); } mBuyButton = (ImageButton) v.findViewById(R.id.Buy); mAddButton = (ImageButton) v.findViewById(R.id.Add); mBuyButton.setVisibility(View.Visible); mAddButton .setVisibility(View.Visible); } ....

中调用了上面的函数

2 个答案:

答案 0 :(得分:2)

这是众所周知的“问题”。实际上,您需要了解listview的工作原理。 为了节省内存,只有您在屏幕上显示的元素才是实时的。当你滚动回来时,其他的经常被破坏和重新创建。

这就是为什么一旦你让你的元素变得不可见,它们再次可见,因为它们被重新创建。

因此,为了让它们再次隐身,每次listview重新创建视图时都需要这样做。

要做到这一点,你需要覆盖getView方法并设置隐藏所需的元素。

答案 1 :(得分:0)

我解决了这个问题:mAdapter.notifySetDataChanged(); !