android onitemclick参数,android – 为每个ListView行而不是onItemClickLi...

您没有解释为什么每行需要单独的单击侦听器,但我建议不要这样做.看一下使用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)

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值