android– 为每个ListView行而不是onItemClickListener实现onClickListener是否存在缺陷?

android– 为每个ListView行而不是onItemClickListener实现onClickListener是否存在缺陷?,第1张

概述为ListView中的每一行注册一个唯一的OnClickListener会更方便,但我想确保这是一种可接受的做法.我的currentdesign是一种相当复杂的方法,可以将OnClickListener的关注点与每个行类型分开.原因是我在ListView中有多个行类.每个班级都有完全不同的责任和行为.例如,考虑一个可以包含

为ListVIEw中的每一行注册一个唯一的OnClickListener会更方便,但我想确保这是一种可接受的做法.我的current design是一种相当复杂的方法,可以将OnClickListener的关注点与每个行类型分开.

原因是我在ListVIEw中有多个行类.每个班级都有完全不同的责任和行为.例如,考虑一个可以包含子类别和书名的ListVIEw.如果单击书名,则应开始显示封面图像的新活动.如果单击子类别,则会显示新的书籍和类别列表.

我希望该行本身能够保持对其自身身份和责任的了解,而不必泄漏有关onItemClickListener的实现者要维护的每一行的知识.

我还想知道这样做的性能影响与实现我自己的逻辑以确定如何处理点击有关.

为每个ListVIEw ArrayAdapter行而不是onItemClickListener实现onClickListener是否有缺点?我正在寻找具体的数据和具体的缺点,而不是模糊的建议.

我是否应该期待内存使用,初始化时间或稳态速度(如滚动列表)受到显着影响?

解决方法:

您没有解释为什么每行需要单独的单击侦听器,但我建议不要这样做.看一下使用VIEw.setTag(Object)/VIEw.getTag()传递特定于行的自定义数据,通过它可以自定义(共享)单击侦听器的响应.

编辑

我从您的示例中看到为什么您希望将不同的OnClickListener附加到您的行.我的印象是你想为每一行单独的OnClickListener实例. (这是我推荐反对这一点的主要原因.)如果你有两种类型的行(类别和标题)和数百行,你只需要两种响应,而不是数百种.我也理解关于分离问题的观点.

不过,我认为重写ListActivity.onListItemClick()(或者如果不使用ListActivity则调用ListVIEw.setonItemClickListener())会更干净,并且不太可能干扰列表视图的 *** 作.您可以使用委托模式,如下所示.

定义抽象类或接口:

public interface MyClickHandler {    public voID onItemClick(ListVIEw l, VIEw v, int position, long ID);}

然后为每种类型的行数据创建一个实现此接口的对象实例(每行不是一个实例).在适配器中,使用setTag(Object)将每行的标记初始化为相应的MyClickHander实例.在ListActivity.onListItemClick()重写中,使用以下逻辑:

protected voID onListItemClick(ListVIEw l, VIEw v, int position, long ID) {    Object tag = v.getTag();    if (tag instanceof MyClickHandler) {        ((MyClickHandler) tag).onItemClick(l, v, position, ID);    } else {        // default processing (if any)    }}
总结

以上是内存溢出为你收集整理的android – 为每个ListView行而不是onItemClickListener实现onClickListener是否存在缺陷?全部内容,希望文章能够帮你解决android – 为每个ListView行而不是onItemClickListener实现onClickListener是否存在缺陷?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1105709.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存