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()
调用 RcyclerView
的 notifyDataSetChanged()
@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'
我有一个 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()
RcyclerView
的 notifyDataSetChanged()
@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'