RecyclerView for messenger应用程序

时间:2016-06-16 10:12:03

标签: android android-recyclerview messenger

我已将聊天布局从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());
  }
});

3 个答案:

答案 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);