RecyclerView Adapter OnClick参数 [英] RecyclerView Adapter OnClick parameter
问题描述
我有一个RecyclerView适配器,该适配器需要在每个项目内的多个视图上实现OnClick侦听器.但是,OnClick侦听器需要在侦听器外部更改变量,但这是一个问题,因为它只能在OnClick侦听器内部使用最终变量.这是我实现OnClick侦听器的代码:
I have a RecyclerView Adapter which needs to implement OnClick listeners on several of the views inside each item. However, the OnClick listener needs to change a variable outside of the listener, but this is a problem since it can only use final variables inside the OnClick listener. Here is my code where I implements the OnClick listener:
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
final boolean liked = false;
holder.button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// here I can only reference a final variable, but I need to change it
if (!liked){
liked = true;
}
}
});
}
我还尝试在ViewHolder类中将变量创建为类变量,并将其用作holder.liked,但仍需要是最终变量.我该如何解决这个问题?
I also tried to create the variable as a class variable in the ViewHolder class and use it as holder.liked, but still it needs to be final. How can i get aroud this issue?
推荐答案
请尝试在扩展的观看器上实现onClickListener:
Try implementing onClickListener on an extended viewholder instead:
private class LikeHolder extends RecyclerView.ViewHolder
implements View.OnClickListener {
private boolean mLiked = false;
public LikeHolder(LayoutInflater inflater, ViewGroup parent) {
super(inflater.inflate(R.layout.your_holder_layout, parent, false));
itemView.setOnClickListener(this);
...
}
@Override
public void onClick(View view) {
if (!mLiked){
mLiked = true;
}
}
这篇关于RecyclerView Adapter OnClick参数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!