package im.actor.sdk.controllers.conversation.messages; import android.view.ViewGroup; import java.util.ArrayList; import im.actor.core.entity.Peer; import im.actor.core.entity.content.AbsContent; import im.actor.sdk.controllers.conversation.messages.content.AbsMessageViewHolder; import im.actor.sdk.controllers.conversation.messages.content.UnsupportedHolder; import im.actor.sdk.util.ViewUtils; import im.actor.sdk.R; public class ViewHolderMatcher { ArrayList<BubbleLayouter> layouters = new ArrayList<>(); public ViewHolderMatcher add(BubbleLayouter layouter) { layouters.add(layouter); return this; } public ViewHolderMatcher addToTop(BubbleLayouter layouter) { layouters.add(0, layouter); return this; } public int getMatchId(AbsContent content) { for (int i = 0; i < layouters.size(); i++) { if (layouters.get(i).isMatch(content)) { return i; } } return -1; } public AbsMessageViewHolder onCreateViewHolder(int id, MessagesAdapter adapter, ViewGroup root, Peer peer) { if (id == -1) { return new UnsupportedHolder(adapter, ViewUtils.inflate(R.layout.adapter_dialog_text, root), peer); } BubbleLayouter baseViewHolderMatch = layouters.get(id); return baseViewHolderMatch.onCreateViewHolder(adapter, root, peer); } public ArrayList<BubbleLayouter> getLayouters() { return layouters; } }