RecyclerView中如何获取具体的位置视图?

How to get specific position view in RecyclerView?

我有一个 recyclerView. One of recyclerView 项目有一个 onClick 方法。在这种方法中,我 setVisibility 将一个项目设置为可见(默认设置已消失),同时获取位置并将其添加到 arrayList.

点击:

public void onClickImageView(ImageView imageView, int position) {
    imageView.setVisibility(View.VISIBLE);
    positionArrayList.add(position);
}

在我转到另一个 activity 之前,我想将 ImageView 可见性重置为默认值(消失),所以我使用一个接口将 positionArrayList 发送到 recyclerView activity 按位置获取视图并将 ImageView 重置为默认值。

界面:

public interface RecyclerViewMainActivityImp {
    void resetImageViewToDefault(ArrayList<Integer> positionArrayList);
}

我在适配器中使用接口方法的地方:

public void OnClickNextActivity() {
    Intent intent = new Intent();
    intent.setClass(context, ClassActivity.class);
    context.startActivity(intent);
    recyclerViewInterface.resetImageViewToDefault(positionArrayList);
}

Activity :

@Override
public void resetImageViewToDefault(ArrayList<Integer> positionArrayList) {
    for (int position = 0; position < positionArrayList.size(); position++) {
        View row = binding.recyclerView.getLayoutManager().findViewByPosition(positionArrayList.get(position));
        ImageView imageView = row.findViewById(R.id.imageView);
        imageView.setVisibility(View.GONE);    
    }
}

当我滚动 recyclerView 时,如果某些项目不再可见,它们的视图将变为空,因此 positionArrayList 中的某些位置不再有它们的视图。

我的问题 一些视图在滚动后为空,我不知道如何访问它们。

我在 google 上搜索并找到了一些解决方案,但无法解决我的问题

注:我用过data binding

任何重新启动的 Activity 都会首先执行其 onResume() 方法。 因此,从 onResume()

调用 RcyclerViewnotifyDataSetChanged()
@Override
public void onResume(){
    super.onResume();
    mAdapter.notifyDataSetChanged();

}
  

您可以尝试解决此问题,

在您的 activity

中创建一个函数
function void updateRecyclerView(position){
   yourArrayListForVisibility.set(position,'hide');
   mAdapter.notifyDataSetChanged();
}


@Override
public void onResume(){
    super.onResume();
    mAdapter.notifyDataSetChanged();

}

在意图之前在您的适配器中调用此函数,并在您的适配器中检查此 arraylist 值以隐藏或显示内容,始终将每个位置的默认值设置为 'yourArrayListForVisibility'