@Override
  public View getView(int position, View convertView, ViewGroup parent) {

    ReceiveMessage msg = getItem(position);
    View view;
    ViewHolder viewHolder;
    if (convertView == null) {
      view = LayoutInflater.from(getContext()).inflate(resourceId, null);
      viewHolder = new ViewHolder();
      viewHolder.leftLayout = (RelativeLayout) view.findViewById(R.id.left_layout);
      viewHolder.rightLayout = (RelativeLayout) view.findViewById(R.id.right_layout);
      viewHolder.leftMsg = (TextView) view.findViewById(R.id.left_text);
      viewHolder.rightMsg = (TextView) view.findViewById(R.id.right_text);
      view.setTag(viewHolder);
    } else {
      view = convertView;
      viewHolder = (ViewHolder) view.getTag();
    }

    if (msg.getType() == ReceiveMessage.MSG_RECEIVE) {
      viewHolder.leftLayout.setVisibility(View.VISIBLE);
      viewHolder.rightLayout.setVisibility(View.GONE);
      viewHolder.leftMsg.setText(msg.getContext());
    } else if (msg.getType() == ReceiveMessage.MSG_SEND) {
      viewHolder.rightLayout.setVisibility(View.VISIBLE);
      viewHolder.leftLayout.setVisibility(View.GONE);
      viewHolder.rightMsg.setText(msg.getContext());
    }

    return view;
  }