在RecycleView适配器中实现对多种ViewHolder类型的视图点击 [英] Implement view clicks on multiple ViewHolder types in RecycleView adapter
本文介绍了在RecycleView适配器中实现对多种ViewHolder类型的视图点击的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在按照此答案(使用抽象的bind()
)中的建议实现多个ViewHolders.我当前的Adapter
和ViewHolder
看起来像:
I am implementing multiple ViewHolders as suggested in this answer which uses an abstract bind()
. My current Adapter
and ViewHolder
looks likes:
// MyAdapter.java
{adapter code}
public static abstract class MyViewHolder extends RecyclerView.ViewHolder {
public MyViewHolder(View itemView) {
super(itemView);
}
protected abstract void bind(MyModel item);
}
// ViewHolder1.java
public class ViewHolder1 extends MyAdapter.MyViewHolder implements View.OnClickListener {
TextView textView;
public ViewHolder1(View itemView) {
super(itemView);
textView = itemView.findViewById(R.id.textView);
textView.setOnClickListener(this);
}
@Override
protected void bind(MyModel item) {
textView.setText(item.getText());
}
@Override
public void onClick(View view) {
//pass the current item position back to adapter
}
}
如何将单击项的位置从此处传递回适配器.我不想在bind()
中设置onClickListener()
,因为在滚动RecyclerView
时它将被多次调用.
How can I pass the position of the clicked item from here back to the adapter. I don't want set onClickListener()
inside bind()
because it would then be called multiple times while my RecyclerView
is scrolled.
推荐答案
@Override
public void onBindViewHolder(@NonNull ViewHolder viewHolder, int i) {
viewHolder.btnPlus.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// btn plus
}
});
viewHolder.btnMinus.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// button minus
}
});
}
public class ViewHolder extends RecyclerView.ViewHolder
{
Button btnPlus, btnMinus;
public ViewHolder(@NonNull View itemView)
{
super(itemView);
btnPlus = itemView.findViewById(R.id.plusbutton);
btnMinus = itemView.findViewById(R.id.minusbtn);
}
}
这篇关于在RecycleView适配器中实现对多种ViewHolder类型的视图点击的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文