首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在安卓中访问GridView中的单个项目

在安卓中访问GridView中的单个项目
EN

Stack Overflow用户
提问于 2013-02-05 22:05:51
回答 2查看 1.2K关注 0票数 0

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

代码语言:javascript
复制
gridView.setVisibility(View.GONE);

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

代码语言:javascript
复制
gridView.getChildAt(position).setVisibility(View.GONE);

我也试过了:

代码语言:javascript
复制
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);
 }
}

我该如何克服这个问题呢?

更新:

在我的适配器getView()方法中:

代码语言:javascript
复制
 imageview.setOnTouchListener(new OnTouchListener(){
@Override
public boolean onTouch(View v, MotionEvent event) {
    overlay.setVisibility(View.VISIBLE);
    imageview.setBackgroundColor(Color.parseColor("#f9a49c"));
    return false;
}});

我在这里尝试做的是,我只是想在onclick上更改背景颜色。但当前视图中最后一个元素的颜色正在更改。还有,在新闻发布会之后也不能留下来。它只是在印完之后就响了。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-02-05 22:54:41

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

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

票数 1
EN

Stack Overflow用户

发布于 2013-02-05 22:44:12

您可以尝试通知适配器

代码语言:javascript
复制
if( gridChild.getChildAt(k) instanceof ImageView ) {

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

notifyDataSetChanged();
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14709363

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档