android - 如何回到相同的recyclerview项目位置
问题描述
我正在使用从 firebase 数据库加载项目的 recyclerview。单击该项目时,将打开一个新活动并显示数据。但是当我返回 recyclerview 活动时,它会从顶部打开,而不是从我离开的位置打开。如何实现从左侧位置打开活动。
onBindViewHolder 是这样的:
@Override
protected void onBindViewHolder(@NonNull myViewHolder holder, int position, @NonNull MainModel model) {
holder.headi.setText(model.getHeading());
holder.arti.setText(model.getArticle());
holder.date.setText(model.getPublishedDate());
holder.user.setText(model.getUsername());
Glide.with(holder.img.getContext())
.load(model.getImageUrl())
.placeholder(R.mipmap.ic_launcher)
.error(R.mipmap.ic_launcher)
.into(holder.img);
holder.relativeLayout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent= new Intent(context, Read.class);
intent.putExtra("Heading",model.getHeading());
intent.putExtra("Article",model.getArticle());
intent.putExtra("ImageUrl",model.getImageUrl());
intent.putExtra("PublishedDate", model.getPublishedDate());
intent.putExtra("PublishedBy", model.getUsername());
context.startActivity(intent);
((Activity)context).finish();
}
});
}
Read 活动中的后退按钮如下所示:
public void back(View view)
{
if (fAuth.getCurrentUser()!=null)
{
i= new Intent(Read.this,Scroll2.class);
}
else{
i= new Intent(Read.this,Scroll.class);
}
startActivity(i);
finish();
}
解决方案
首先将可见的顶部项目位置存储在onPause()
您的活动中
int lastPosition = ((LinearLayoutManager) recyclerView.getLayoutManager()).findFirstCompletelyVisibleItemPosition();
使用保存,使用savedInstanceState
恢复onResume()
((LinearLayoutManager) recyclerView.getLayoutManager()).scrollToPositionWithOffset(lastPosition,0);
推荐阅读
- r - 计算文本之间的相似度以查找重复项
- reactjs - React 不能两次更新状态
- wpf - WPF 带有参数的双向数据绑定,但每个方向的功能不同
- maven - 使用组和 dataProvider 值运行时跳过 TestNG 测试
- c# - C# 中没有空格和小写字母的电子邮件验证
- reactjs - 为什么我不能使用我选择的选项的值?
- dotnetnuke - Can't redirect user after login in DNN
- html - 无法点击轮播帖子的链接
- spring - mocking resttemplate exchange always returns null
- javascript - Deleting Service worker cache crashes