gpt4 book ai didi

android - 我应该将 setOnClickListener 放在 RecyclerView 适配器的什么位置

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:00:51 24 4
gpt4 key购买 nike

在互联网上的教程中,他们在 RecyclerView 的适配器中设置了 OnClickListener,他们以两种方式定义它:在 ViewHolder 内部或在 BindViewHolder 内部。

我的问题是哪种方法更好,请推荐任何其他方法(如果可用)

1) ViewHolder 内部:

public static class ViewHolder extends RecyclerView.ViewHolder {

public ViewHolder(View itemView) {
super(itemView);
tvSrc = (TextView) itemView.findViewById(R.id.tvSrc);
itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(v.getContext(), "inside viewholder position = " + getAdapterPosition(), Toast.LENGTH_SHORT).show();
}
});
}

2) 在 BindViewHolder 中

public void onBindViewHolder(DisplayTrainsAdapter.ViewHolder viewHolder, final int position) {

viewHolder.tvSrc.setText(mDataset.get(position).strSrc);
viewHolder.tvSrc.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {

Toast.makeText(v.getContext(), "position = " + getItemId(position), Toast.LENGTH_SHORT).show();
}
});
}

最佳答案

您的 1 号解决方案是您建议的最佳解决方案,因为在 notify..() 方法触发的每次无效时,不会在绑定(bind)中调用该分配。我也知道其他解决方案,但您需要在您的 Activity 中实现 android.view.GestureDetector。

如果您希望对适配器进行其他改进,请查看我的 FlexibleAdapter https://github.com/davideas/FlexibleAdapter并随时在您的项目中实现。

关于android - 我应该将 setOnClickListener 放在 RecyclerView 适配器的什么位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29537375/

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