【发布时间】:2021-07-14 02:14:45
【问题描述】:
我正在创建一个聊天应用程序。当列表中的当前最低项目在屏幕上可见时,我试图让所有新消息出现在聊天应用程序的底部,但当用户向上滚动时(就像大多数聊天应用程序一样)。截至目前,当屏幕上仍有未使用的空间时,我已经让它工作了,但是当 RecyclerView 有太多视图无法容纳时,它开始将新消息从屏幕放置到底部。这是我创建 RecyclerView 的方法:
private void initRecyclerView() {
mRecyclerView = findViewById(R.id.chatRecyclerView);
mAdapter = new ChatRecyclerViewAdapter(this, mMessages, mUsernames, mRoomID, mDatabaseReference);
mRecyclerView.setAdapter(mAdapter);
final LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);
linearLayoutManager.setStackFromEnd(true);
RecyclerView.AdapterDataObserver observer = new RecyclerView.AdapterDataObserver() {
@Override
public void onChanged() {
super.onChanged();
if(linearLayoutManager.findLastVisibleItemPosition()==(mAdapter.getItemCount()-1)){
mRecyclerView.smoothScrollToPosition(mAdapter.getItemCount()-1);
}
}
};
mAdapter.registerAdapterDataObserver(observer);
mRecyclerView.setLayoutManager(linearLayoutManager);
【问题讨论】:
标签: java android android-recyclerview