2016-06-16 4 views
0

listView에서 RecyclerView로 채팅 레이아웃을 변환했습니다.메신저 애플리케이션 용 RecyclerView

이제 어떤 문제에 직면했습니다. 새 메시지가 도착하면 자동으로 표시되지 않으므로 수동으로 해당 메시지로 스크롤해야합니다.

ListView에서 일찍 작동합니다.

recylerView에 setStackFormEnd를 사용했습니다.

나는 WhatsApp에 같은 기능은 새로운 메시지가 도착하고 다음 마지막 메시지를 볼 수있는 경우

처럼 당신이 메시지를 스크롤하면 메시지 만

는 다음이 변경되지 않음을 보여줍니다이 원하는 위치. 마지막 위치 messages 메시지의 목록입니다

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

에 코드 코드

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 만들기에

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

샘플.

+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);