Android开发者指南:不同地使用嵌套类/接口
我正在学习Android应用程序开发。我从阅读API指南开始(我以前有一些背景),当我来到布局部分时,我发现了以下内容:Android开发者指南:不同地使用嵌套类/接口,android,Android,我正在学习Android应用程序开发。我从阅读API指南开始(我以前有一些背景),当我来到布局部分时,我发现了以下内容: // Create a message handling object as an anonymous class. private OnItemClickListener mMessageClickedHandler = new OnItemClickListener() { public void onItemClick(AdapterView parent, View
// Create a message handling object as an anonymous class.
private OnItemClickListener mMessageClickedHandler = new OnItemClickListener() {
public void onItemClick(AdapterView parent, View v, int position, long id) {
// Do something in response to the click
}
};
listView.setOnItemClickListener(mMessageClickedHandler);
其中:1-listView是一个listView对象,它是AdapterView的子类
2-OnItemClickListener是AdapterView中的嵌套类(接口) 当我第一次读到它时,我注意到它没有将匿名类名写为:
AdapterView.OnItemClickListener…
我认为这可能是因为它假设代码在AdapterView类中,但是当我注意到最后一行listView.setOnItemClickListener(mMessageClickedHandler)时代码>我说这一定是在活动方法中,我最后得出结论,这一定是个错误
但当我到达Grid View guide()并在第4步中,它编写了以下代码段:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
GridView gridview = (GridView) findViewById(R.id.gridview);
gridview.setAdapter(new ImageAdapter(this));
gridview.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View v,
int position, long id) {
Toast.makeText(HelloGridView.this, "" + position,
Toast.LENGTH_SHORT).show();
}
});
}
其中,它具有与上一示例相同的条件,但在使用嵌套接口时,它使用包含该接口的类编写它:CompoundButton.OnCheckedChangeListener()
,而不是上一示例中的:OnCheckedChangeListener()
其条件与前一个相同,因为:
1-CompoundButton和AdapterView都包含嵌套界面。
2-ToggleButton和GridView分别是CompoundButton和AdapterView的子类。
3-它们都在同一范围内定义和使用,即在活动方法中
所以,我去搜索GridView的课程,看看是否有人有问题,我发现了以下问题:
他在上面的GridView课程中使用了相同的代码,这对他很有效
(在他进口了适当的包装后)
那么,为什么它们的使用方式不同呢?我在Java中遗漏了什么吗?或者我注意到了一些错误?如果开发人员具有导入AdapterView.OnItemClickListener
,则new OnItemClickListener()
是完全有效的。那么这是否意味着开发人员应该编写new AdapterView.OnItemClickListener()
如果导入AdapterView.OnItemClickListener不存在?正确。这就是在Java中引用嵌套类的方式。
ToggleButton toggle = (ToggleButton) findViewById(R.id.togglebutton);
toggle.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
// The toggle is enabled
} else {
// The toggle is disabled
}
}
});