2016-06-16 3 views
0

Я преобразовал макет чата из спискаView в RecyclerView.RecyclerView for messenger application

Теперь m сталкивается с какой-то проблемой, когда появляются новые сообщения, а затем автоматически не отображается, мне приходится вручную прокручивать эти сообщения.

Раньше в ListView это работало.

Я использовал комплект setStackFormEnd в recylerView.

Я хочу, чтобы функция, как WhatsApp имеет как

если новое сообщение приходит, и вы можете просматривать последнее сообщение, то это покажет, что сообщения, но

если вы прокрутку сообщений, то это не меняет должность.

layoutManager.setStackFromEnd(true); 
    messagesView.setLayoutManager(layoutManager); 
    messagesView.setItemAnimator(new DefaultItemAnimator()); 
    messagesView.addOnScrollListener(mOnScrollListener); 

образца на создание кода Code

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

прокручивать recyclerview к последней позиции

messagesView.scrollToPosition(messages.size()-1); 

messages Где ваш список сообщений.

+0

Я не хочу вручную прокручивать до положения. На самом деле есть некоторое положение setReverseLayout, но даже это не работает для меня. – Jarvis

+0

'layoutManager.setReverseLayout (true);'? Это тоже не работает? – jitinsharma

1
LinearLayoutManager layoutManager = new LinearLayoutManager(getActivity()); 
layoutManager.setStackFromEnd(true); 
layoutManager.setReverseLayout(true) 
yourRecyclerView.setLayoutManager(layoutManager); 
+0

Добавьте контекст к вашему коду, пожалуйста, – Arbitur

+0

@Arbitur проверьте здесь https://stackoverflow.com/a/36897608/6352712 пожалуйста – Sergey

0

Используйте эту строку после отправки/получения сообщения.

mRecyclerView.postDelayed(new Runnable() { 
         @Override 
         public void run() { 
          mRecyclerView.smoothScrollToPosition(mRecyclerView.getAdapter().getItemCount()); 
         } 
        }, 100); 
Смежные вопросы