package com.example.koreanchatapp; import java.util.ArrayList; import android.content.Context; import android.view.Gravity; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.BaseAdapter; import android.widget.ImageView; import android.widget.ListView; import android.widget.TextView; import android.widget.Toast; import android.widget.AdapterView.OnItemClickListener; import android.widget.LinearLayout.LayoutParams; public class AwesomeAdapter extends BaseAdapter { private ArrayList list; private Context mCont; LayoutParams lp; public Message ob; int type; public AwesomeAdapter(Context context, ArrayList msg) { super(); this.mCont = context; this.list = msg; } @Override public int getCount() { return list.size(); } @Override public Object getItem(int position) { return list.get(position); } @Override public int getViewTypeCount() { return 2; } @Override public int getItemViewType(int position) { Message msg = (Message)getItem(position); if (msg.isStatusMessage()) { return 0; } else { return 1; } } @Override public View getView(int position, View convertView, ViewGroup parent) { ob=(Message) this.getItem(position); ViewHolder holder; type=getItemViewType(position); if(convertView == null) { holder = new ViewHolder(); switch (type) { case 0: convertView = LayoutInflater.from(mCont).inflate(R.layout.sms_row, parent, false); holder.text = (TextView) convertView.findViewById(R.id.message_text); convertView.setTag(holder); break; case 1: convertView = LayoutInflater.from(mCont).inflate(R.layout.sms_row2, parent, false); holder.message = (ImageView) convertView.findViewById(R.id.message_image); convertView.setTag(holder); break; } } else holder = (ViewHolder) convertView.getTag(); switch(type){ case 0: holder.text.setText(ob.getmsg()); System.out.println("value of isStatus image or text-->"); lp = (LayoutParams) holder.text.getLayoutParams(); break; case 1: holder.message.setImageBitmap(ob.getMessage()); System.out.println("value of isStatus image or text-->"); lp = (LayoutParams) holder.message.getLayoutParams(); break; } //Check whether message is mine to show green background and align to right if(ob.isMine()) { switch(type){ case 0: holder.text.setBackgroundResource(R.drawable.speech_bubble_orange); lp.gravity = Gravity.LEFT; break; case 1: holder.message.setBackgroundResource(R.drawable.speech_bubble_orange); lp.gravity = Gravity.LEFT; break; } } //If not mine then it is from sender to show orange background and align to left else { switch(type){ case 0: holder.text.setBackgroundResource(R.drawable.speech_bubble_green); lp.gravity = Gravity.RIGHT; break; case 1: holder.message.setBackgroundResource(R.drawable.speech_bubble_green); lp.gravity = Gravity.RIGHT; break; } } switch(type){ case 0: holder.text.setLayoutParams(lp); holder.text.setTextColor(R.color.textColor); break; case 1: holder.message.setLayoutParams(lp); break; } return convertView; } private static class ViewHolder { ImageView message; TextView text; } @Override public long getItemId(int arg0) { // TODO Auto-generated method stub return 0; } }