对应一个聊天的会话窗口,我们可能会有几十种的消息类型
我在项目中的做法是 用一个容器,根据不同的type来添加不同的view
不过这时候在listview的复用上就比较麻烦
用一个viewgroup
<LinearLayout android:id="@+id/msg_content_childParent_LL" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="2dp" android:background="@drawable/my_question_chatto_bg" android:gravity="center" android:orientation="vertical" > </LinearLayout>
private void setLayout(int itemViewType, ViewHolder viewHolder2) { switch (itemViewType) { case ChatViewFactory.URL_PARESE_CONTENT: viewHolder2.msgContentLL.addView(new ChatOutLinkView(context, reply, contact).getView()); break; case ChatViewFactory.BUSINESS_CARD: viewHolder2.msgContentLL.addView(new ChatBusinessCardView(context, reply, contact).getView()); break; case ChatViewFactory.BUSINESS_CARD_NEW: viewHolder2.msgContentLL.addView(new ChatBusinessCard5View(context, reply, contact).getView()); break;
当会话界面消息过多时,会非常的卡,这时候没有用view的复用,所以考虑用map软引用,代价是内存消耗的非常多