您好,我正在建立一个聊天屏幕,在其中按照日期将聊天分组,例如WhatsApp,但为了对数据进行分组,我需要反向渲染数据,因此我在采用者和上使用了 setReverseLayout Collections.reverse(myChats)用于数据反向操作,还用于 setStackFromEnd ,以便在收到新消息时它会停留在底部,但不幸的是,在加载聊天记录时它不会滚动到底部,也不会滚动到弹出新消息时显示在底部。谁能告诉我我的代码出了什么问题
我的代码
//Init Varibles
ArrayList<Message> myChats = new ArrayList<Message>();
private RecyclerView recyclerView;
private RecyclerView.Adapter mAdapter;
private LinearLayoutManager layoutManager;
private Boolean isUpdate = false;
// OnCreate
recyclerView = (RecyclerView) findViewById(R.id.messages);
recyclerView.setHasFixedSize(true);
layoutManager = new LinearLayoutManager(this);
layoutManager.setReverseLayout(true);
layoutManager.setStackFromEnd(true);
recyclerView.setLayoutManager(layoutManager);
mAdapter = new MessageAdoptor(myChats,getApplicationContext());
recyclerView.setAdapter(mAdapter);
// On Data Change
myChats.clear();
myChats.addAll(myChatsTemp);
Collections.reverse(myChats);
mAdapter.notifyDataSetChanged();
解决方案
recyclerView.smoothScrollToPosition(0);