Android(java)-适配器onClickListener方法始终返回最后一项
我需要在适配器中获取当前项的ID,但它只返回最后添加项的ID。 我想不出怎么避开这件事Android(java)-适配器onClickListener方法始终返回最后一项,java,android,android-recyclerview,onclick,Java,Android,Android Recyclerview,Onclick,我需要在适配器中获取当前项的ID,但它只返回最后添加项的ID。 我想不出怎么避开这件事 @Override protected void onBindViewHolder(ViewHolder holder, final int position, CardViewModel cardViewModel) { button.setOnClickListener(new View.OnClickListener() {
@Override
protected void onBindViewHolder(ViewHolder holder, final int position, CardViewModel cardViewModel) {
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.d("id: ",cardViewModel.getId());
}
});
}
按顺序单击第一、第二和第三项并输出:
3
3
3
必须是:
1
2
3
我的按钮不适用于适配器视图,因此无法使用:holder.button
谢谢
编辑:
单击按钮时,我需要获取cardView上的名称,但每次它都会返回最后一张卡上的名称。而不是获取
cardViewModel.getId()
使用位置变量,它将返回项目单击的当前位置。
您需要使用ArrayList或CardViewModel列表CardViewModel作为参数,然后您将能够通过
您需要通过如下所示的CarViewModel
列表:
protected void onBindViewHolder(ViewHolder holder, final int position, ArrayList <CardViewModel> cardViewModelList)
CardViewModel cardviewModel = cardViewModelList.get(position)
这将给您带来预期的结果:
Log.d("id: ",cardViewModel.getId());
这是因为当绑定最后一个视图持有者时,它正在调用
按钮.setOnClickListener
,它将替换该按钮的任何现有侦听器。此行为是预期的/有效的。你想完成什么?我想获取屏幕上显示的项目的id。你在这里覆盖什么?cardViewModel
在哪里设置?我不明白你说的话。这个适配器是用于列表控件还是什么?