/** Open the clicked contacts sms history view */
  public void clickedText(View view) {
    try {
      final int position = (Integer) view.getTag();
      final Conversation conversation = msgList.get(position);
      final String address =
          conversation.hasLocalNumber() ? conversation.getAddress() : conversation.getFixedNumber();

      Intent intent = new Intent(view.getContext(), ConversationActivity.class);
      intent.putExtra("position", position);
      intent.putExtra("name", getContactByNbr(address));
      intent.putExtra("number", conversation.getFixedNumber());
      startActivity(intent);
    } catch (Exception e) {

    }
  }
 @Override
 public int compare(Conversation conversation, Conversation conversation2) {
   final Calendar cal1 = conversation.getLatestMessage().getTimestamp();
   final Calendar cal2 = conversation2.getLatestMessage().getTimestamp();
   return cal2.compareTo(cal1);
 }
    @Override
    public View getView(int i, final View v, ViewGroup viewGroup) {
      View view = v;

      try {
        final ViewHolder holder;

        if (i < 0 || i >= list.size()) {
          return null;
        }

        if (view == null) {
          LayoutInflater inflater = ((Activity) context).getLayoutInflater();
          view = inflater.inflate(R.layout.sms_item, viewGroup, false);
          holder = new ViewHolder();
          holder.contactName = (TextView) view.findViewById(R.id.sender);
          holder.date = (TextView) view.findViewById(R.id.date);
          view.setTag(holder);
        } else {
          holder = (ViewHolder) view.getTag();
        }

        // get the current sms conversation
        Conversation currentConv = list.get(i);
        Set<ListableMessage> messageSet = currentConv.getSmsList();
        List<ListableMessage> messageList = new ArrayList<>();
        messageList.addAll(messageSet);
        Collections.sort(messageList);
        Button tryButton = (Button) view.findViewById(R.id.imageButton);

        // Link an sms to the playbutton
        int counter = messageList.size() - 1;

        while (messageList.get(counter).isSent() && counter >= 1) {
          counter--;
        }
        if (!messageList.get(counter).isRead()) {
          tryButton.setBackgroundResource(R.drawable.new_message_1);
        } else {
          tryButton.setBackgroundResource(R.drawable.old_message_1);
        }
        view.findViewById(R.id.imageButton).setTag(messageList.get(counter));
        String address =
            currentConv.hasLocalNumber() ? currentConv.getAddress() : currentConv.getFixedNumber();
        // set the correct data of the element
        holder.contactName.setText(getContactByNbr(address));
        holder.contactName.setPaintFlags(
            holder.contactName.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG);
        holder.contactName.setTag(i);

        Object[] messages = list.get(i).getSmsList().toArray();
        holder.date.setText(
            DateDiffUtility.callDateToString(
                ((ListableMessage) messages[messages.length - 1]).getTimestamp().getTimeInMillis(),
                context));
      } catch (Exception e) {

      }

      return view;
    }