我已将聊天布局从listView转换为RecyclerView。
现在我遇到了一些问题,当新邮件到达然后它没有自动显示时,我必须手动滚动到那些邮件。
在ListView的早期工作。
我在recylerView中使用了set setStackFormEnd。
我想要像whatsapp这样的功能
如果新消息到达并且您能够查看最后一条消息,那么它将显示该消息,但
如果你滚动消息,那么它不会改变位置。
layoutManager.setStackFromEnd(true);
messagesView.setLayoutManager(layoutManager);
messagesView.setItemAnimator(new DefaultItemAnimator());
messagesView.addOnScrollListener(mOnScrollListener);
创建代码
的示例super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final RecyclerView recyclerView = (RecyclerView) findViewById(R.id.recyclerview);
final Button addButton = (Button) findViewById(R.id.button_is_reverse);
LinearLayoutManager layoutManager = new LinearLayoutManager(this);
layoutManager.setStackFromEnd(true);
layoutManager.setReverseLayout(true);
recyclerView.setLayoutManager(layoutManager);
recyclerView.addItemDecoration(new DividerDecoration(this));
adapter = new SampleAdapter(items);
recyclerView.setAdapter(adapter);
addButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
items.add("Items" +items.size());
adapter.notifyItemInserted(items.size());
}
});
答案 0 :(得分:1)
LinearLayoutManager layoutManager = new LinearLayoutManager(getActivity());
layoutManager.setStackFromEnd(true);
layoutManager.setReverseLayout(true)
yourRecyclerView.setLayoutManager(layoutManager);
答案 1 :(得分:0)
将recyclerview滚动到最后位置
messagesView.scrollToPosition(messages.size()-1);
messages
是您的邮件列表。
答案 2 :(得分:0)
发送/接收消息事件后使用这些行。
mRecyclerView.postDelayed(new Runnable() {
@Override
public void run() {
mRecyclerView.smoothScrollToPosition(mRecyclerView.getAdapter().getItemCount());
}
}, 100);