packagecom.example.uibestpractice;importjava.util.List;importandroid.content.Context;importandroid.view.LayoutInflater;importandroid.view.View;importandroid.view.ViewGroup;importandroid.widget.ArrayAdapter;importandroid.widget.LinearLayout;importandroid.widget.TextView;public class MsgAdapter extends ArrayAdapter{private intresourceID;public MsgAdapter(Context context, int textViewResourceId, Listobjects) {super(context, textViewResourceId, objects);//TODO Auto-generated constructor stub
resourceID=textViewResourceId;
}
@Overridepublic View getView(intposition, View convertView, ViewGroup parent) {//TODO Auto-generated method stub
Msg msg=getItem(position);
View view;
ViewHolder viewHolder;if(convertView==null){
view=LayoutInflater.from(getContext()).inflate(resourceID, null);
viewHolder=newViewHolder();
viewHolder.leftLayout=(LinearLayout) view.findViewById(R.id.left_layout);
viewHolder.rightLayout=(LinearLayout) view.findViewById(R.id.right_layout);
viewHolder.leftMsg=(TextView) view.findViewById(R.id.left_msg);
viewHolder.rightMsg=(TextView) view.findViewById(R.id.right_msg);
view.setTag(viewHolder);
}else{
view=convertView;
viewHolder=(ViewHolder) view.getTag();
}if(msg.getType()==Msg.TYPE_RECEIVED){//如果是收到的消息,则设置显示左边的消息布局,将右边的布局隐藏
viewHolder.leftLayout.setVisibility(View.VISIBLE);
viewHolder.rightLayout.setVisibility(View.GONE);
viewHolder.leftMsg.setText(msg.getContent());
}else if(msg.getType()==Msg.TYPE_SENT){
viewHolder.leftLayout.setVisibility(View.GONE);
viewHolder.rightLayout.setVisibility(View.VISIBLE);
viewHolder.rightMsg.setText(msg.getContent());
}returnview;
}classViewHolder{
LinearLayout leftLayout;
LinearLayout rightLayout;
TextView leftMsg;
TextView rightMsg;
}
}