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));
我有一个 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));