package it.demo.twitterlike.android.ui.adapters;
import it.demo.twitterlike.android.domain.InternalMessage;
import it.demo.twitterlike.android.domain.InternalUserProfile;
import it.demo.twitterlike.android.ui.R;
import it.demo.twitterlike.android.ui.UserDetailsActivity;
import it.demo.twitterlike.android.utils.UserUtils;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import android.content.Context;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.TextView;
public class MessageListAdapter extends ExtendibleArrayAdapter<InternalMessage> {
public MessageListAdapter(Context context) {
super(context);
}
public MessageListAdapter(Context context, List<InternalMessage> messages) {
super(context, messages);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
final InternalMessage item = getItem(position);
final ViewHolder holder;
if (convertView == null) {
convertView = getLayoutInflater().inflate(
R.layout.adapter_messageview_row, null);
holder = new ViewHolder();
holder.tvMessageUpdateTime = (TextView) convertView
.findViewById(R.id.tvMessageUpdateTime);
holder.tvUserFirstName = (TextView) convertView
.findViewById(R.id.tvUserFirstName);
holder.tvUserFirstName.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
InternalUserProfile author = ((InternalUserProfile) holder.tvUserFirstName
.getTag());
if (author != null) {
UserDetailsActivity.show(getContext(), author);
}
}
});
holder.tvUserMessage = (TextView) convertView
.findViewById(R.id.tvUserMessage);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.tvMessageUpdateTime.setText(formatOrderTime(item.getMessage()
.getLastModifiedDate()));
holder.tvUserMessage.setText(item.getMessage().getText());
holder.tvUserFirstName.setTag(item.getAuthor());
holder.tvUserFirstName.setText(UserUtils.getUserFullName(item
.getAuthor().getUser()));
return convertView;
}
protected String formatOrderTime(Date time) {
String result = null;
if (time != null) {
if (time.after(todayStart())) {
result = new SimpleDateFormat("HH:mm").format(time);
} else {
result = new SimpleDateFormat("dd-MM HH:mm").format(time);
}
}
return result;
}
public static Date todayStart() {
return dayStart(new Date());
}
public static Date dayStart(Date date) {
Calendar c = Calendar.getInstance();
c.setTime(date);
c.set(Calendar.HOUR_OF_DAY, 0);
c.set(Calendar.MINUTE, 0);
c.set(Calendar.SECOND, 0);
c.set(Calendar.MILLISECOND, 0);
return c.getTime();
}
private static class ViewHolder {
private TextView tvUserFirstName, tvUserMessage, tvMessageUpdateTime;
}
}