我在父AdapterView.OnItemClickListener
中实施了Activity
,如果<=
的位置为零,则会返回。当我将此Activity
子类化并覆盖OnItemClickListener
时,请调用super
,然后从我的Adapter
中检索该项,并抛出ArrayIndexOutOfBoundsException
。但这是因为在从我的子类调用return
之前未调用Adapter.getItem
。换句话说:
此作品
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
if (position <= 0) {
return;
}
final Foo foo = mAdapter.getItem(position);
}
这不起作用
在我的父母Activity
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
if (position <= 0) {
return;
}
}
在我的子类中
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
super.onItemClick(parent, view, position, id);
final Foo foo = mAdapter.getItem(position);
}
但是如果我在我的父OnItemClickListener.onItemClick
中记录Activity
并在我的子类中省略Adapter.getItem
,则不会抛出Exception
并打印日志。
所以,我想我只是不明白为什么事先没有调用super
和return
,即使看起来应该如此。 super
只是不这样运作吗?我只是完全忽略了一些东西吗?需要明确的是,ArrayIndexOutOfBoundsException
在这种情况下没有任何意义。这是因为我使用的是非常自定义的Adapter
。