package com.steps.geosms.conversationsList;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Typeface;
import android.text.format.DateUtils;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import com.ioane.sharvadze.geosms.R;
import com.steps.geosms.objects.Contact;
import com.steps.geosms.objects.Conversation;
import com.steps.geosms.utils.AsyncImageDownloader;
import com.steps.geosms.utils.Utils;
import java.util.List;
/**
* Class ConversationsListAdapter
* custom list adapter
*
* Created by Ioane on 2/23/2015.
*/
public class ConversationsListAdapter extends ArrayAdapter<Conversation> {
@SuppressWarnings("unused")
private final String TAG = ConversationsListAdapter.class.getSimpleName();
private Bitmap DEFAULT_IMAGE;
private AsyncImageDownloader mImageDownloader;
private class ViewHolder {
TextView contactNameView;
TextView messageView;
TextView messageDateView;
ImageView contactImageView;
}
public ConversationsListAdapter(Context context, int resource, List<Conversation> objects) {
super(context, resource, objects);
DEFAULT_IMAGE = BitmapFactory.decodeResource(context.getResources(),
R.mipmap.ic_no_image);
// make it circle like.
DEFAULT_IMAGE = Utils.getCircleBitmap(DEFAULT_IMAGE);
mImageDownloader = new AsyncImageDownloader(context, 100);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view = convertView;
ViewHolder holder;
if (view == null) {
LayoutInflater inflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = inflater.inflate(R.layout.conversation_item, null);
holder = new ViewHolder();
holder.contactNameView = (TextView)view.findViewById(R.id.contact_name_text_view);
holder.messageDateView = (TextView)view.findViewById(R.id.last_message_date_view);
holder.messageView = (TextView)view.findViewById(R.id.last_message_text_view);
holder.contactImageView = (ImageView)view.findViewById(R.id.contact_picture_image_view);
view.setTag(holder);
}else{
holder = (ViewHolder)view.getTag();
}
Conversation conversation = getItem(position);
if(conversation == null) return view;
// not to show different values if contact is null...
holder.contactImageView.setImageBitmap(DEFAULT_IMAGE);
holder.messageView.setText("");
Contact contact = conversation.getContact();
String header = Utils.getChatHeader(conversation.getContacts());
holder.contactImageView.setTag(contact == null ? null : contact.getPhotoUri());
holder.contactImageView.setTag(R.string.contact,contact);
if(contact != null){
holder.contactNameView.setText(header);
mImageDownloader.addImage(contact,holder.contactImageView);
}
holder.messageView.setText(conversation.getLastMessage());
if(conversation.getDate() != null){
CharSequence formattedTime = DateUtils.getRelativeTimeSpanString(conversation.getDate().getTime(),System.currentTimeMillis(),
DateUtils.MINUTE_IN_MILLIS, DateUtils.FORMAT_ABBREV_RELATIVE);
holder.messageDateView.setText(formattedTime);
}else{
holder.messageDateView.setText("");
}
if(!conversation.isMessageRead()){
holder.messageView.setTypeface(null, Typeface.BOLD_ITALIC);
holder.contactNameView.setTypeface(null, Typeface.BOLD_ITALIC);
holder.messageDateView.setTypeface(null, Typeface.BOLD_ITALIC);
}else{
holder.messageView.setTypeface(null,Typeface.NORMAL);
holder.contactNameView.setTypeface(null,Typeface.NORMAL);
holder.messageDateView.setTypeface(null, Typeface.NORMAL);
}
return view;
}
}