카카오톡과 비슷한 채팅UI를 만드는중에 안되는 부분이 있어서 질문합니다..
기존 소스
public class AwesomeAdapter extends BaseAdapter{
 private Context mContext;
 private ArrayList<Message> mMessages;
 
 public AwesomeAdapter(Context context, ArrayList<Message> messages) {
  super();
  this.mContext = context;
  this.mMessages = messages;
 }
 @Override
 public int getCount() {
  return mMessages.size();
 }
 @Override
 public Object getItem(int position) {  
  return mMessages.get(position);
 }
 @Override
 public View getView(int position, View convertView, ViewGroup parent) {
  Message message = (Message) this.getItem(position);
  ViewHolder holder;
  if(convertView == null)
  {
   holder = new ViewHolder();
   convertView = LayoutInflater.from(mContext).inflate(R.layout.sms_row, parent, false);
   holder.message = (TextView) convertView.findViewById(R.id.message_text);
   convertView.setTag(holder);
  }
  else
   holder = (ViewHolder) convertView.getTag();
  
  holder.message.setText(message.getMessage());
  
  LayoutParams lp = (LayoutParams) holder.message.getLayoutParams();
  //check if it is a status message then remove background, and change text color.
  if(message.isStatusMessage())
  {
   holder.message.setBackgroundDrawable(null);
   lp.gravity = Gravity.LEFT;
   holder.message.setTextColor(R.color.textFieldColor);
  }
  else
  {  
   //Check whether message is mine to show green background and align to right
   if(message.isMine())
   {
    holder.message.setBackgroundResource(R.drawable.speech_bubble_green);
    lp.gravity = Gravity.RIGHT;
   }
   //If not mine then it is from sender to show orange background and align to left
   else
   {
    holder.message.setBackgroundResource(R.drawable.speech_bubble_orange);
    lp.gravity = Gravity.LEFT;
   }
   holder.message.setLayoutParams(lp);
   holder.message.setTextColor(R.color.textColor); 
  }
  return convertView;
 }
 private static class ViewHolder
 {
  TextView message;
 }
 @Override
 public long getItemId(int position) {
  //Unimplemented, because we aren't using Sqlite.
  return position;
 }
}
를
( 수정중인 소스)
public class AwesomeAdapter extends BaseAdapter {
 private Context mContext;
 private ArrayList<Message> mMessages;
 public AwesomeAdapter(Context context, ArrayList<Message> messages) {
  super();
  this.mContext = context;
  this.mMessages = messages;
 }
 @Override
 public int getCount() {
  return mMessages.size();
 }
 @Override
 public Object getItem(int position) {
  return mMessages.get(position);
 }
 @Override
 public View getView(int position, View convertView, ViewGroup parent) {
  
  LinearLayout linear = new LinearLayout(this.mContext);
  LinearLayout sublinear = new LinearLayout(this.mContext);
  
  
  TextView m_text = new TextView(this.mContext);
  m_text.setTag("textView");
  m_text.setTextSize(20);
  
  linear.addView(sublinear, new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
  sublinear.setPadding(5, 5, 5, 5);
  sublinear.addView(m_text, new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT) );
  
  Message message = (Message) this.getItem(position);
  ViewHolder holder;
  
  if (convertView == null) {
   holder = new ViewHolder();
   convertView = LayoutInflater.from(mContext).inflate(R.layout.sms_row, parent, false);
   holder.message = (TextView) convertView.findViewById(R.id.message_text);
//   convertView = (View) linear;
//   holder.message = (TextView) convertView.findViewWithTag("textView");
   convertView.setTag(holder);
  } else
   holder = (ViewHolder) convertView.getTag();
  holder.message.setText(message.getMessage());
  LayoutParams lp = (LayoutParams) holder.message.getLayoutParams();
  if (message.isStatusMessage()) {
   holder.message.setBackgroundDrawable(null);
   lp.gravity = Gravity.LEFT;
   holder.message.setTextColor(Color.BLACK);
  } else {
   if (message.isMine()) {
    if (message.isDateTime()) {}
    else
     holder.message
       .setBackgroundResource(R.drawable.speech_bubble_green);
    lp.gravity = Gravity.RIGHT;
   } else {
    if (message.isDateTime()) {
    } else
     holder.message
       .setBackgroundResource(R.drawable.speech_bubble_orange);
    lp.gravity = Gravity.LEFT;
   }
   holder.message.setLayoutParams(lp);
   holder.message.setTextColor(Color.BLACK);
  }
  return convertView;
 }
 private static class ViewHolder {
  TextView message;
 }
 @Override
 public long getItemId(int position) {
  return position;
 }
}
이처럼 바꾸었는데 기존의 XML을 사용할 경우엔 직접보내기한 내용은 우측정렬로 나오고 미리 설정해놓은 내용은 좌측 정렬이 되는데, 바꾸면서 전부 좌측정렬로 되네요... 어딜 수정해야할지..
sms_row.xml부분
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >
    <TextView
        android:id="@+id/message_text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="5sp"
        android:textSize="20sp" />
</LinearLayout>
입니다...