如何从Adapter获取位置并将其发送到Activity



我试图从适配器中获取单击项目的位置,并将其发送到活动,但似乎无法使其工作。

public void onBindViewHolder(@NonNull HomeViewHolder holder, int position) {
...
...
}

我试图从onBindViewHolder获取位置,然后将其发送到活动并在数组中调用它:

private int[] images = {R.raw.glasses1, R.raw.glasses3, R.raw.glasses4, R.raw.glasses5,
R.raw.glasses6, R.raw.glasses7, R.raw.glasses8, R.raw.glasses9, R.raw.glasses10}; 

然后呼叫

images[position]

在处理项目上的事件(如单击(时,应始终使用holder对象的getAdapterPosition()方法,而不是onBindViewHolder()中的position方法,因为它没有更新。

Adapter中的点击项位置保存在getAdapterPosition()getPosition()方法中。两者都有区别,你可以在这里查看。我建议您随时使用getAdapterPosition()来获取单击项目的Position

它使用getAdapterPosition((方法工作。在onBindViewHolder((中,我创建了onListener((方法,如下所示:

@Override
public void onBindViewHolder(@NonNull HomeViewHolder holder, int position) {
...
...
holder.cardView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int pos=holder.getAdapterPosition();
Intent intent = new Intent(v.getContext(), ArActivity.class);
intent.putExtra("pos",pos);
}
});
}

然后在onCreate((方法中获取活动中的数据,如下所示:

@Override
protected void onCreate(Bundle savedInstanceState){
Bundle extras = getIntent().getExtras();
if(extras!=null){
pos=extras.getInt("pos");
}

其中"pos"是在活动类内部声明的。

在适配器中尝试getAdapterPostion()方法,并实现监听器以传递给活动

最新更新