GridView.getItemAtPosition 始终为空(但列表显示项目)

GridView.getItemAtPosition is always null (but list displays items)

我有一个 GridView 对象。它正在显示用户库中的照片。这是有效的,列表可以在屏幕上滚动。

然而,每当我尝试获取被点击的项目时,我得到的都是空值。

_gridView.setAdapter(new ImageAdapter(getActivity()));
_gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                @Override
                public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                    ImageView image = (ImageView) (parent.getItemAtPosition(position));
                    System.out.println("Getting pos " + position + " and obj is " + parent.getItemAtPosition(position));
                }
            });

它打印出来的位置总是正确的。如果我点击第一个项目,它会告诉我位置为 0。但是,它说该项目为空(这对我来说没有意义,因为它在 phone 上显示得很好)。

你能告诉我这里缺少什么吗?

主要原因通常是因为您的 getItem 版本是 returning null。 getItem 应该 return 该项目在您的数据集中的位置,并且 AdapterView.getItemAtPosition(...) 在内部调用 adapter.getItem(position)

请去掉这个演员表:ImageView image = (ImageView) (parent.getItemAtPosition(position));