gpt4 book ai didi

android - 为什么 ViewHolder 上的 OnClickListener 不起作用?

转载 作者:行者123 更新时间:2023-12-01 18:02:54 24 4
gpt4 key购买 nike

我正在尝试实现一种方法来处理 RecyclerView 上的项目选择。我个人不喜欢一些答案中建议的通过手势传递的方式,并且我认为实现 OnClickListener ,如建议的 herehere ,干净多了。

事实是......这种模式实际上不起作用!我真的无法理解为什么我的 OnClickListener.onClick从不调用。这有点像另一种方法在 onClick 处理之前拦截点击。

这是我的代码:

    public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
TextView tvName;
ImageView star;

public ViewHolder(View itemView) {
super(itemView);

tvName = (TextView) itemView.findViewById(R.id.CHAT_ITEM_name);
star = (ImageView) itemView.findViewById(R.id.CHAT_ITEM_star);

Fonts.setTypeface(tvName, regular);
}

@Override
public void onClick(View view) {
int position = getLayoutPosition();
select(position);
}
}

不幸的是,对于我来说,能够访问整个数据集中被单击项目的位置以便将其删除非常重要,因此像 indexOfChild 这样的操作也是 Not Acceptable :我尝试过,但此方法为您提供了列表中 visibile 部分中项目的位置,从而使 list.remove(position) 不可能实现。

最佳答案

查看更新后的代码:您没有将 onClickListener 设置为 ViewHolder 中的任何 View 。忘记点击监听器是一个可以理解的错误。

只需使用:

tvName.setOnClickListener(this);
star.setOnClickListener(this);

您可以设置两者或仅其中之一。您还可以简单地获取这两个 View 的父布局,以便适配器中的整个项目本身都可以单击。

itemView.setOnClickListener(this);

关于android - 为什么 ViewHolder 上的 OnClickListener 不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60601458/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com