gpt4 book ai didi

java - 回收器 View 内的多个事件触发器(onClick)

转载 作者:行者123 更新时间:2023-12-02 10:08:59 25 4
gpt4 key购买 nike

我有一个带有多个 View 的recyclerView,我已经正确解决了所有不同的viewholder,并且某些viewholder用相同的ViewGroup表示,在viewgroup内我有一个按钮,当单击此按钮时,它会更改textView中的值,直到现在一切工作正常,问题是当我触发事件时,当我单击一个按钮时,同一 View 组列表中的所有 View 组中的一些 View 组会发生变化,而不是在列表中专门按顺序排列,但在实例中是不变的,我已经设置了一些断点,但是有什么不正常的事情吗,知道为什么会发生这样的事情吗?

我的 ViewHolder Hirechary 看起来像这样。

public abstract class AbstractViewHolderR extends RecyclerView.ViewHolder{

public Button btn;
public TextView view;

...
}

public class ChildVH1 extends AbstractViewHolderR{
...
}

...other ViewHolder look the same.

/// the event listener look like this.
public class Click implement View.OnClickListener{
AbstractViewHolderR object;
public Click(AbstractViewHolderR o){
object = o;
}
@Override
public void onClick(View v){
////error checking omited
Integer ii = Integer.Parse(object.view.getText().toString);
ii++;
object.view.setText(ii.ToString());
}

}

最佳答案

将您的 TextView 和 Btn 移至 View Holder,然后您应该像这样将点击监听器添加到 ViewHolder 本身

public abstract class AbstractViewHolderR extends RecyclerView.ViewHolder{

//UPDATE
@Override
public long getItemId(int position) {
return position;
}
...
}

public class ChildVH1 extends RecyclerView.ViewHolder{
public Button btn;
public TextView view;

public ChildVH1(View itemView){
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//do your stuff
//you can use getAdapterPosition() to get current
//position in adapter
}
});
}
}

}

关于java - 回收器 View 内的多个事件触发器(onClick),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55131446/

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