日期:2014-05-17  浏览次数:20598 次

接口可以在实例化的时候被定义吗?
最近在学习android,在看GridView的代码是有下面一段代码:

gridview.setOnItemClickListener(
  new OnItemClickListener() {
  public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
  Toast.makeText(HelloGridViewActivity.this, "" + position, Toast.LENGTH_SHORT).show();
  }
  }
);

这里接口OnItemClickListener在实例化的同时被定义,可以这么理解吗?

------解决方案--------------------
用的是OnItemClickListener这个的实现类,java的多态,面向接口编程
------解决方案--------------------
恩 2L 正解

 那这里就很好理解 匿名类实现OnItemClickListener 接口
------解决方案--------------------
写的更明白点就是:
class MyListener implements OnItemClickListener{
public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
Toast.makeText(HelloGridViewActivity.this, "" + position, Toast.LENGTH_SHORT).show();
}
}
OnItemClickListener myListener = new MyListener();
gridview.setOnItemClickListener(myListener);
这样就形成了多态,接口是你自己现实的;他最终还是OnItemClickListener;