Recyclerviewを使用して、チャットウィンドウにメッセージを表示しています。ただし、新しいメッセージが編集されているときは、リサイクラビューのフォーカスは最後の要素にある必要があります。 recyclerviewのフォーカスを最初ではなく最後の要素にシフトする何らかの方法があると思います。
recyclerView.smoothScrollToPosition(position);
を使用します
positionは最後に挿入されたアイテムのインデックスです。これにより、RecyclerView
フォーカスが最後の要素に移動します。
LinearLayoutManagerオブジェクトに2行のいずれかを追加して、recyclerviewを一番下までスクロールできます...
llm.setStackFromEnd(true);
OR
llm.setReverseLayout(true);
つかいます
recyclerView.smoothScrollToPosition(position)
adapter.notifyDataSetChanged();
ここで、位置は最後の要素のインデックスです
recyclerView.getAdapter().getItemCount()-1
これを使用して最後の要素を取得します。
これは私のために働いた。
確認この位置は、表示するアイテムの位置です。
recyclerView.smoothScrollToPosition(position);
次のようなapp:stackFromEnd = "true"をリサイクラビューのXMLコードで使用できます。
<Android.support.v7.widget.RecyclerView
Android:id="@+id/message_list"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:layout_above="@id/message_input"
Android:layout_alignParentTop="true"
app:stackFromEnd="true" />
できる方法は2つあります。
1:RecyclerViewのLayoutManagerを作成する場合、コンストラクターの最後のパラメーターをtrue
として作成します。
LinearLayoutManager layoutManager = new LinearLayoutManager(MainActivity.this,LinearLayoutManager.HORIZONTAL,true);
2:単にRecyclerViewに最後の位置までスクロールするように指示します。
recyclerView.smoothScrollToPosition(lastPosition);