package cn.jiguang.imui.messages; import android.content.Context; import android.support.annotation.Nullable; import android.support.v7.widget.DefaultItemAnimator; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.support.v7.widget.SimpleItemAnimator; import android.util.AttributeSet; import cn.jiguang.imui.commons.models.IMessage; public class MessageList extends RecyclerView { private Context mContext; private MessageListStyle mMsgListStyle; public MessageList(Context context) { super(context); } public MessageList(Context context, @Nullable AttributeSet attrs) { super(context, attrs); parseStyle(context, attrs); } public MessageList(Context context, @Nullable AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); parseStyle(context, attrs); } @SuppressWarnings("ResourceType") private void parseStyle(Context context, AttributeSet attrs) { mContext = context; mMsgListStyle = MessageListStyle.parse(context, attrs); } /** * Set adapter for MessageList. * * @param adapter Adapter, extends MsgListAdapter. * @param <MESSAGE> Message model extends IMessage. */ public <MESSAGE extends IMessage> void setAdapter(MsgListAdapter<MESSAGE> adapter) { SimpleItemAnimator itemAnimator = new DefaultItemAnimator(); itemAnimator.setSupportsChangeAnimations(false); setItemAnimator(itemAnimator); LinearLayoutManager layoutManager = new LinearLayoutManager( getContext(), LinearLayoutManager.VERTICAL, true); layoutManager.setStackFromEnd(true); setLayoutManager(layoutManager); adapter.setLayoutManager(layoutManager); adapter.setStyle(mContext, mMsgListStyle); addOnScrollListener(new ScrollMoreListener(layoutManager, adapter)); super.setAdapter(adapter); } }