package what.whatandroid.inbox; import android.content.Context; import android.support.v4.content.ContextCompat; import android.text.format.DateUtils; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.ImageView; import android.widget.TextView; import api.inbox.inbox.Message; import what.whatandroid.R; import what.whatandroid.callbacks.ViewConversationCallbacks; import java.util.Date; /** * Adapter for displaying a list of conversations in the inbox */ public class InboxListAdapter extends ArrayAdapter<Message> implements AdapterView.OnItemClickListener { private final LayoutInflater inflater; private ViewConversationCallbacks viewConversation; public InboxListAdapter(Context context){ super(context, R.layout.list_message); inflater = LayoutInflater.from(context); try { viewConversation = (ViewConversationCallbacks)context; } catch (ClassCastException e){ throw new ClassCastException(context.toString() + " must implement ViewConversationCallbacks"); } } @Override public View getView(int position, View convertView, ViewGroup parent){ ViewHolder holder; if (convertView != null){ holder = (ViewHolder)convertView.getTag(); } else { convertView = inflater.inflate(R.layout.list_message, parent, false); holder = new ViewHolder(); holder.subject = (TextView)convertView.findViewById(R.id.subject); holder.sender = (TextView)convertView.findViewById(R.id.sender); holder.date = (TextView)convertView.findViewById(R.id.date); holder.sticky = (ImageView)convertView.findViewById(R.id.sticky_thread); holder.sticky.setImageResource(R.drawable.ic_star_24dp); convertView.setTag(holder); } Message message = getItem(position); holder.subject.setText(message.getSubject()); holder.sender.setText("Sender: " + message.getUsername()); holder.date.setText(DateUtils.getRelativeTimeSpanString(message.getDate().getTime(), new Date().getTime(), 0, DateUtils.FORMAT_ABBREV_ALL)); if (message.isUnread()){ holder.subject.setTextColor(ContextCompat.getColor(getContext(), R.color.primary_text)); } else { holder.subject.setTextColor(ContextCompat.getColor(getContext(), R.color.secondary_text)); } if (message.isSticky()){ holder.sticky.setVisibility(View.VISIBLE); } else { holder.sticky.setVisibility(View.GONE); } return convertView; } @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id){ Message m = getItem(position); m.setUnread(false); viewConversation.viewConversation(m.getConvId().intValue()); } private static class ViewHolder { public TextView subject, sender, date; public ImageView sticky; } }