我搜索了互联网并在Google Android帮助中心中读出了文档,但是现在仍然不清楚两者之间的区别以及在什么情况下何时使用它?
我经过堆栈溢出未找到任何详细答案.
serviceListVIEwProvIDerPage.setonItemClickListener(new AdapterVIEw.OnItemClickListener() { @OverrIDe public voID onItemClick(AdapterVIEw<?> parent, VIEw vIEw, int position, long ID) { //something to do } });
和
serviceListVIEwProvIDerPage.setonItemClickListener(this);public voID onItemClick(AdapterVIEw<?> parent, VIEw vIEw, int position, long ID) {//something to do}
提前致谢
解决方法:
两者相同,但声明和用法不同.首先,让我们看看我们在做什么.
这里:
vIEw.setonItemClickListener(Listener);
您正在您的视图中设置一个侦听器.
之后,您必须重写OnItemClickListener接口的onItemClick方法,以便遵循提供的合同并对项目单击进行 *** 作.
现在查看您的代码示例:
第一案
// set a Listener to your wIEw serviceListVIEwProvIDerPage.setonItemClickListener( // create a new OnItemClickListener new AdapterVIEw.OnItemClickListener() { @OverrIDe // public voID onItemClick(AdapterVIEw<?> parent, VIEw vIEw, int position, long ID) { //something to do }});
在这里,您在将侦听器设置为视图时将其声明为匿名内部类.
优点:
>快速编码
缺点:
>如果方法内部的逻辑太长或接口具有许多方法,则会降低可读性
>您不能在侦听器内部重用逻辑
> can cause memory leaks(感谢@Murat K)
第二例
要理解第二个,您必须看到代码必须在实现AdapterVIEw.OnItemClickListener的VIEw内,这就是为什么您可以使用此代码
// here you set the class itself as a ListenerserviceListVIEwProvIDerPage.setonItemClickListener(this);
但是,只要您必须遵循接口的约定,该类就必须实现该方法:
public voID onItemClick(AdapterVIEw<?> parent, VIEw vIEw, int position, long ID) { //something to do}
优点:
>可读性
>可重用性
缺点:
>使VIEw成为Listener不是我的首选方式,我更喜欢拥有一个仅作为Listener的类,而另一个仅作为VIEw的类.
总结以上是内存溢出为你收集整理的java-setOnItemClickListener和only onItemClick有什么区别全部内容,希望文章能够帮你解决java-setOnItemClickListener和only onItemClick有什么区别所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)