0

我在访问 gridview 中的单个项目时遇到问题。我有图像的网格视图。在长按单个项目时,我正在使用多模式侦听器激活 CAB 菜单。在听众内部,我能够做到

gridView.setVisibility(View.GONE);

但我无法做到这一点,它给出了 NULL 指针异常

gridView.getChildAt(position).setVisibility(View.GONE);

我也试过这个:

ViewGroup gridChild = (ViewGroup) gridView.getChildAt(1);
int childSize = gridChild.getChildCount();
for(int k = 0; k < childSize; k++) {
 if( gridChild.getChildAt(k) instanceof ImageView ) {
      gridChild.getChildAt(k).setVisibility(View.GONE);
 }
}

我该如何克服呢?

更新:

在我的 Adapter getView() 方法中:

 imageview.setOnTouchListener(new OnTouchListener(){
@Override
public boolean onTouch(View v, MotionEvent event) {
    overlay.setVisibility(View.VISIBLE);
    imageview.setBackgroundColor(Color.parseColor("#f9a49c"));
    return false;
}});

我在这里要做的是,我只想在点击时更改背景颜色。但是当前视图中最后一个元素的颜色正在改变。而且在新闻发布后也不会留下来。它只是在按下后熄灭。

4

2 回答 2

1

在适配器的getView()方法中,您应该将视图设置为可见或不可见,具体取决于支持适配器的数据的状态。

您不应该假设每个项目都有一个独特的视图,适配器通常会重用滚动时离开屏幕的项目的视图。

于 2013-02-05T14:54:40.833 回答
0

您可以尝试通知适配器

if( gridChild.getChildAt(k) instanceof ImageView ) {

gridChild.getChildAt(k).setVisibility(View.GONE);

notifyDataSetChanged();
}
于 2013-02-05T14:44:11.853 回答