【问题标题】:Access individual item in a GridView in Android在 Android 的 GridView 中访问单个项目
【发布时间】:2013-02-06 02:31:10
【问题描述】:

我在访问 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;
}});

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

【问题讨论】:

    标签: android gridview android-view android-gridview


    【解决方案1】:

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

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

    【讨论】:

    • 更新了问题。我在这里要做的是,我只想在点击时更改背景颜色。但是当前视图中最后一个元素的颜色正在改变。而且在新闻发布后也不会留下来。按下后它就会熄灭。
    【解决方案2】:

    您可以尝试通知适配器

    if( gridChild.getChildAt(k) instanceof ImageView ) {
    
    gridChild.getChildAt(k).setVisibility(View.GONE);
    
    notifyDataSetChanged();
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多