尝试从我创建和填充的gridView中获取特定位置项后面的数据。 下面的监听器方法setOnItemClickListener()运行良好,但我需要的是获取有关渲染屏幕(gridview)的信息,而不仅仅是项目点击。
这是我的活动:
ImageAdapter adapter = new ImageAdapter(LaunchActivity.this,
myArray, elements);
gridview.setAdapter(adapter);
gridview.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View v,
int position, long id) {
ImageView iv = (ImageView) v.findViewById(R.id.icon_image);
iv.setImageDrawable(getResources()
.getDrawable(R.drawable.drank));
String name = elements[position].toString();
System.out.println("===POSITION: " + position);
if (dbHelper.getElementByPosition(position) == null) {
System.out.println("can insert");
dbHelper.addElement(new Beer(name, 1, position));
} else {
System.out.println("already exists");
}
}
});
if (!elements.isEmpty()) {
for (Element cn : elements) {
Element item = (Element) gridview.getItemAtPosition(cn.getPosition());
System.out.println(cn.getPosition() + ", ITEM: " + item);
}
}
继续返回null ...:
[2012-11-04 01:33:46 - Emulator] I/System.out( 1771): 7, ITEM: null
[2012-11-04 01:33:46 - Emulator] I/System.out( 1771): 3, ITEM: null
[2012-11-04 01:33:46 - Emulator] I/System.out( 1771): 11, ITEM: null
[2012-11-04 01:33:47 - Emulator] I/System.out( 1771): 14, ITEM: null
[2012-11-04 01:33:47 - Emulator] I/System.out( 1771): 12, ITEM: null
我不明白为什么我错了... 也许有人可以发现我的错误或只是一个想法会很棒。 谢谢!
答案 0 :(得分:0)
在onCreate期间,适配器尚未填充网格。你有几种可能性。其中之一是在onStart中使用延迟的runnable,例如
new Handler().runDelayed( Runnable, long ).
在这个可运行的内部,你的网格将被填满。
或者更好的是,在适配器上注册数据托盘服务器,您就会知道网格何时被填满。