android 如何保存Recyclerview的最后位置,就像在聊天应用程序中,消息从最后滚动到左边的地方显示?[已关闭]

nxowjjhe  于 2022-11-03  发布在  Android
关注(0)|答案(1)|浏览(129)

已关闭。此问题需要details or clarity。当前不接受答案。
**想要改进此问题吗?**通过editing this post添加详细信息并阐明问题。

18小时前关门了。
Improve this question
我正在建立一个聊天应用程序,我已经在回收视图中表示了聊天,但我如何保存回收视图的位置。我想说的是,如果我已经滚动到一些特定的位置,我如何进入相同的位置,即使在活动被破坏后?我尝试了很多,去了文档,YouTube教程,没有工作!
我试过这个,但是它不起作用!!
@覆盖受保护的void onPause(){ super.onPause();

lastPosition = linearLayoutManager.findFirstVisibleItemPosition();
    Log.d(TAG, "onDataChange: " + lastPosition);

    SharedPreferences getPrefs = PreferenceManager.getDefaultSharedPreferences(getBaseContext());
    SharedPreferences.Editor e = getPrefs.edit();
    e.putInt("lastPos", lastPosition);
    e.apply();
}

@Override
protected void onResume() {
    super.onResume();

    String currentId = FirebaseAuth.getInstance().getUid();
    assert currentId != null;
    FirebaseDatabase.getInstance().getReference().child("presence").child(currentId).setValue("Online");

    SharedPreferences getPrefs = PreferenceManager.getDefaultSharedPreferences(getBaseContext());
    lastPosition = getPrefs.getInt("lastPos", 0);
    chatsBinding.chatsRecycler.scrollToPosition(lastPosition);

    Log.d(TAG, "onDataChange: rv" + lastPosition);

}
brccelvz

brccelvz1#

你可以做一件事保存recyclerView的索引,在那里你离开了聊天滚动,在对象可能是UserChat {它可能包括你的聊天列表,用户谁聊天,id等,只是添加一个数据成员的最后访问作为int}
现在,当您将适配器传递给recyclerView时,请调用recyclerView的方法

recyclerview.scrollTo(YOUR_SAVED_POSITION);

相关问题