2

我有一个ListView显示要购买的不同物品。如果用户选择一个项目,那么我将“ Buy”和“ Add”按钮设置为可见。当用户单击任何其他项目Visibility时,之前选择的 "Buy和 " Add" 设置为Gone,同时,我再次将所选列表项Visibility的' 设置为。ButtonVisible

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

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);
}

mlistView.setonItemClickListner()我在......中调用了上述函数。

4

2 回答 2

2

这是一个众所周知的“问题”。实际上,您需要了解 listview 是如何工作的。为了节省内存,只有您在屏幕上显示的元素是实时的。当您滚动回它们时,其他的通常会被破坏并重新创建。

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

因此,为了使它们再次不可见,您需要在每次列表视图重新创建视图时执行此操作。

为此,您需要覆盖 getView 方法并将所需的元素设置为隐藏。

于 2013-03-22T09:25:51.603 回答
0

我通过以下方式解决了这个问题: mAdapter.notifySetDataChanged(); !!

于 2013-03-22T11:20:07.720 回答